glimmer-cs-gladiator 0.7.2 → 0.7.3
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 +13 -0
- data/README.md +22 -8
- data/VERSION +1 -1
- data/bin/gladiator +22 -1
- data/bin/gladiator-setup +80 -0
- data/bin/glimmer-cs-gladiator +22 -0
- data/glimmer-cs-gladiator.gemspec +13 -5
- data/lib/glimmer-cs-gladiator.rb +1 -0
- data/lib/glimmer-cs-gladiator/launch.rb +6 -0
- data/lib/views/glimmer/gladiator.rb +384 -502
- data/lib/views/glimmer/gladiator/gladiator_menu_bar.rb +181 -0
- data/lib/views/glimmer/gladiator/progress_shell.rb +31 -0
- metadata +27 -4
- data/bin/gladiator_runner.rb +0 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4027589accf83fa2244350dc416c3ab56bf28c9f65cbf3288d96c0b5f13c27aa
         | 
| 4 | 
            +
              data.tar.gz: 11e18e7f18605188cd151e4e8307b10dc808b9059a7f275d3a37c1a1ba3cc65a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c774eaa5fb91c4a5ceb08aa98715ab32bddcea61c4793b3d0dfd74119142c2245c7574835dda59d698239b8be3448d1d7fc76fe801643b53d4aa236b3a6bd54e
         | 
| 7 | 
            +
              data.tar.gz: cab4d312f803a8e93fb5d7954ffd7319092ae4a1c9d827dca95b5670c22ef484475c34989b109b91f922f126a73eea94d7c73b56d53fa6781075011419b8d1fb
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,18 @@ | |
| 1 1 | 
             
            # Change Log
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 0.7.3
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            - Add gladiator-setup to make gladiator executable available everywhere
         | 
| 6 | 
            +
            - Package Gladiator as Mac DMG file
         | 
| 7 | 
            +
            - Shrink minimum height for editor area (too large for putting side by side with another window)
         | 
| 8 | 
            +
            - Change initial default size of Gladiator window to the entire screen size
         | 
| 9 | 
            +
            - Made layout more resilient to shrinkage so that the Navigation area widgets don't get jumbled up
         | 
| 10 | 
            +
            - Show open project dialog when run as Gladiator app (e.g. Mac app) instead of opening the local directory of the app
         | 
| 11 | 
            +
            - Extract gladiator_menu_bar custom widget and reuse in open_project shell (to use in app version)
         | 
| 12 | 
            +
            - Extract progress_shell custom shell
         | 
| 13 | 
            +
            - Fix issue with disposed? error in save_config
         | 
| 14 | 
            +
            - Fix issue with first open of a file with an empty brand new gladiator session not showing file content until resizing
         | 
| 15 | 
            +
             | 
| 3 16 | 
             
            ## 0.7.2
         | 
| 4 17 |  | 
| 5 18 | 
             
            - Fallback font ("Courier") for text editor when "Consolas" is not available
         | 
    
        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.7. | 
| 1 | 
            +
            # <img src='https://raw.githubusercontent.com/AndyObtiva/glimmer-cs-gladiator/master/images/glimmer-cs-gladiator-logo.svg' height=85 /> Gladiator 0.7.3 - [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 |  | 
| @@ -86,6 +86,12 @@ Gladiator currently supports the following text editing features (including keyb | |
| 86 86 | 
             
            - [JRuby](https://www.jruby.org/download): Same version required by [Glimmer](https://github.com/AndyObtiva/glimmer-dsl-swt)
         | 
| 87 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).
         | 
| 88 88 |  | 
| 89 | 
            +
            ## Download
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            You may download a [packaged version of the Gladiator app](https://www.dropbox.com/s/kcr20unx7obs6z2/Gladiator-0.7.3.dmg?dl=1) on the Mac.
         | 
| 92 | 
            +
             | 
| 93 | 
            +
            Otherwise, if you prefer a command line version, then follow the Setup Instructions below.
         | 
| 94 | 
            +
             | 
| 89 95 | 
             
            ## Setup Instructions
         | 
| 90 96 |  | 
| 91 97 | 
             
            Note: if you encounter any issues, check if they are documented in [TODO.md](TODO.md), [issues](https://github.com/AndyObtiva/glimmer-cs-gladiator/issues), or [pull requests](https://github.com/AndyObtiva/glimmer-cs-gladiator/pulls) as they might be on my radar to fix. Otherwise, please report as an [issue](https://github.com/AndyObtiva/glimmer-cs-gladiator/issues) or better yet fix and submit a [pull request](https://github.com/AndyObtiva/glimmer-cs-gladiator/pulls).
         | 
| @@ -110,6 +116,20 @@ Run (`jruby -S bundle` or `bundle` directly if you have [RVM](https://rvm.io/)): | |
| 110 116 | 
             
            jruby -S bundle
         | 
| 111 117 | 
             
            ```
         | 
| 112 118 |  | 
| 119 | 
            +
            Afterwards, to ensure system wide availablility of the `gladiator` command, run this command in an environment that has JRuby:
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            ```
         | 
| 122 | 
            +
            gladiator-setup
         | 
| 123 | 
            +
            ```
         | 
| 124 | 
            +
             | 
| 125 | 
            +
            Finally, start a new terminal session or source .gladiator_source:
         | 
| 126 | 
            +
             | 
| 127 | 
            +
            ```
         | 
| 128 | 
            +
            source ~/.gladiator_source
         | 
| 129 | 
            +
            ```
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            You should be able to run `gladiator` from anywhere now, even cross-rubies in [RVM](https://rvm.io).
         | 
| 132 | 
            +
             | 
| 113 133 | 
             
            ## Usage
         | 
| 114 134 |  | 
| 115 135 | 
             
            You may run the `gladiator` command to bring up the text editor in the project directory you would like to edit:
         | 
| @@ -138,19 +158,13 @@ gladiator relative-or-absolute-path/to/project | |
| 138 158 |  | 
| 139 159 | 
             
            Note: If you cloned this project and bundle installed, you may invoke via `bin/gladiator` instead.
         | 
| 140 160 |  | 
| 141 | 
            -
            If your project is not a JRuby project, then you cannot install [glimmer-cs-gladiator](https://rubygems.org/gems/glimmer-cs-gladiator), so you must install in a separate JRuby environment and invoke by passing the project path as per command above. Alternatively, you may clone this project, and invoke gladiator via `bin/gladiator` (that's how I use Gladiator for most of my projects):
         | 
| 142 | 
            -
             | 
| 143 | 
            -
            ```
         | 
| 144 | 
            -
            bin/gladiator relative-or-absolute-path/to/project
         | 
| 145 | 
            -
            ```
         | 
| 146 | 
            -
             | 
| 147 161 | 
             
            ### Glimmer Custom Shell Reuse
         | 
| 148 162 |  | 
| 149 163 | 
             
            To reuse Gladiator as a Glimmer Custom Shell inside another Glimmer application, add the
         | 
| 150 164 | 
             
            following to the application's `Gemfile`:
         | 
| 151 165 |  | 
| 152 166 | 
             
            ```
         | 
| 153 | 
            -
            gem 'glimmer-cs-gladiator', '>= 0.7. | 
| 167 | 
            +
            gem 'glimmer-cs-gladiator', '>= 0.7.3'
         | 
| 154 168 | 
             
            ```
         | 
| 155 169 |  | 
| 156 170 | 
             
            Run:
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.7. | 
| 1 | 
            +
            0.7.3
         | 
    
        data/bin/gladiator
    CHANGED
    
    | @@ -1,8 +1,29 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 | 
            +
            # Copyright (c) 2020-2021 Andy Maleh
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # Permission is hereby granted, free of charge, to any person obtaining
         | 
| 6 | 
            +
            # a copy of this software and associated documentation files (the
         | 
| 7 | 
            +
            # "Software"), to deal in the Software without restriction, including
         | 
| 8 | 
            +
            # without limitation the rights to use, copy, modify, merge, publish,
         | 
| 9 | 
            +
            # distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 10 | 
            +
            # permit persons to whom the Software is furnished to do so, subject to
         | 
| 11 | 
            +
            # the following conditions:
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            # The above copyright notice and this permission notice shall be
         | 
| 14 | 
            +
            # included in all copies or substantial portions of the Software.
         | 
| 15 | 
            +
            #
         | 
| 16 | 
            +
            # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 17 | 
            +
            # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 18 | 
            +
            # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 19 | 
            +
            # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 20 | 
            +
            # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 21 | 
            +
            # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 22 | 
            +
            # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
| 23 | 
            +
             | 
| 3 24 | 
             
            require 'glimmer/launcher'
         | 
| 4 25 |  | 
| 5 | 
            -
            gladiator_runner = File.expand_path('../ | 
| 26 | 
            +
            gladiator_runner = File.expand_path('../glimmer-cs-gladiator', __FILE__)
         | 
| 6 27 | 
             
            launcher = Glimmer::Launcher.new([gladiator_runner, '-J-Xrs'] + ARGV)
         | 
| 7 28 | 
             
            launcher.application_paths.to_a.each do |file|
         | 
| 8 29 | 
             
              if file != gladiator_runner
         | 
    
        data/bin/gladiator-setup
    ADDED
    
    | @@ -0,0 +1,80 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # Copyright (c) 2020-2021 Andy Maleh
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # Permission is hereby granted, free of charge, to any person obtaining
         | 
| 6 | 
            +
            # a copy of this software and associated documentation files (the
         | 
| 7 | 
            +
            # "Software"), to deal in the Software without restriction, including
         | 
| 8 | 
            +
            # without limitation the rights to use, copy, modify, merge, publish,
         | 
| 9 | 
            +
            # distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 10 | 
            +
            # permit persons to whom the Software is furnished to do so, subject to
         | 
| 11 | 
            +
            # the following conditions:
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            # The above copyright notice and this permission notice shall be
         | 
| 14 | 
            +
            # included in all copies or substantial portions of the Software.
         | 
| 15 | 
            +
            #
         | 
| 16 | 
            +
            # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 17 | 
            +
            # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 18 | 
            +
            # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 19 | 
            +
            # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 20 | 
            +
            # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 21 | 
            +
            # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 22 | 
            +
            # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            version = File.read(File.expand_path('../VERSION', __dir__))
         | 
| 25 | 
            +
            puts "== Gladiator (Glimmer Editor) Version #{version.strip} =="
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ruby = `which jruby`.to_s.strip
         | 
| 28 | 
            +
            if ruby.empty?
         | 
| 29 | 
            +
              return puts('jruby is not available. Make sure you have jruby installed and available in path environment (or selected if using RVM)')
         | 
| 30 | 
            +
            end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            rvm_command = `which rvm`
         | 
| 33 | 
            +
            if rvm_command.to_s.strip.empty?
         | 
| 34 | 
            +
              command = "#{ruby} #{File.expand_path('../gladiator', __FILE__)}"
         | 
| 35 | 
            +
            else
         | 
| 36 | 
            +
              rvm = `rvm current`.strip
         | 
| 37 | 
            +
              command = "rvm #{rvm} do #{ruby} #{File.expand_path('../gladiator', __FILE__)}"
         | 
| 38 | 
            +
            end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            gladiator_script = <<~SHELL_SCRIPT
         | 
| 41 | 
            +
              function gladiator()
         | 
| 42 | 
            +
              {
         | 
| 43 | 
            +
                #{command}
         | 
| 44 | 
            +
              }
         | 
| 45 | 
            +
            SHELL_SCRIPT
         | 
| 46 | 
            +
             | 
| 47 | 
            +
             | 
| 48 | 
            +
            require 'fileutils'
         | 
| 49 | 
            +
            home_dir = `echo ~`.strip
         | 
| 50 | 
            +
            FileUtils.mkdir_p("#{home_dir}/bin")
         | 
| 51 | 
            +
            gladiator_script_file = "#{home_dir}/.gladiator_source"
         | 
| 52 | 
            +
            gladiator_script_file_bash = "$HOME/.gladiator_source"
         | 
| 53 | 
            +
            File.write(gladiator_script_file, gladiator_script)
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            [
         | 
| 56 | 
            +
              ['.bash_profile', '.bashrc'],
         | 
| 57 | 
            +
              ['.zprofile', '.zshrc']
         | 
| 58 | 
            +
            ].each do |profile_and_fallback|
         | 
| 59 | 
            +
              shell_profile_file_name = profile_and_fallback.first
         | 
| 60 | 
            +
              shell_profile_file_name = profile_and_fallback.last if !File.exist?("#{home_dir}/#{shell_profile_file_name}")
         | 
| 61 | 
            +
              shell_profile_file = "#{home_dir}/#{shell_profile_file_name}"
         | 
| 62 | 
            +
              FileUtils.touch(shell_profile_file)
         | 
| 63 | 
            +
              shell_profile = File.read(shell_profile_file)
         | 
| 64 | 
            +
              gladiator_source_statement = "source \"#{gladiator_script_file_bash}\""
         | 
| 65 | 
            +
              unless shell_profile.split("\n").detect {|line| line.include?(gladiator_source_statement) }
         | 
| 66 | 
            +
                File.write(shell_profile_file, "#{shell_profile}\n#{gladiator_source_statement}")
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
              puts "~/#{shell_profile_file_name} has been modified to source the `gladiator` function from ~/.gladiator_source"
         | 
| 69 | 
            +
            end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
            puts <<~OUTPUT
         | 
| 72 | 
            +
              
         | 
| 73 | 
            +
              Before using `gladiator`, start a new shell session (open a new terminal tab) or run:
         | 
| 74 | 
            +
              
         | 
| 75 | 
            +
              source ~/.gladiator_source
         | 
| 76 | 
            +
              
         | 
| 77 | 
            +
              Afterwards, you may run the following command from anywhere to start Gladiator (Glimmer Editor):
         | 
| 78 | 
            +
              
         | 
| 79 | 
            +
              gladiator
         | 
| 80 | 
            +
            OUTPUT
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # Copyright (c) 2020-2021 Andy Maleh
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # Permission is hereby granted, free of charge, to any person obtaining
         | 
| 4 | 
            +
            # a copy of this software and associated documentation files (the
         | 
| 5 | 
            +
            # "Software"), to deal in the Software without restriction, including
         | 
| 6 | 
            +
            # without limitation the rights to use, copy, modify, merge, publish,
         | 
| 7 | 
            +
            # distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 8 | 
            +
            # permit persons to whom the Software is furnished to do so, subject to
         | 
| 9 | 
            +
            # the following conditions:
         | 
| 10 | 
            +
            #
         | 
| 11 | 
            +
            # The above copyright notice and this permission notice shall be
         | 
| 12 | 
            +
            # included in all copies or substantial portions of the Software.
         | 
| 13 | 
            +
            #
         | 
| 14 | 
            +
            # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 15 | 
            +
            # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 16 | 
            +
            # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 17 | 
            +
            # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 18 | 
            +
            # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 19 | 
            +
            # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 20 | 
            +
            # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            require_relative '../lib/glimmer-cs-gladiator/launch'
         | 
| @@ -2,19 +2,19 @@ | |
| 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.7. | 
| 5 | 
            +
            # stub: glimmer-cs-gladiator 0.7.3 ruby lib
         | 
| 6 6 |  | 
| 7 7 | 
             
            Gem::Specification.new do |s|
         | 
| 8 8 | 
             
              s.name = "glimmer-cs-gladiator".freeze
         | 
| 9 | 
            -
              s.version = "0.7. | 
| 9 | 
            +
              s.version = "0.7.3"
         | 
| 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 = "2021-01- | 
| 14 | 
            +
              s.date = "2021-01-20"
         | 
| 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 | 
            -
              s.executables = ["gladiator".freeze]
         | 
| 17 | 
            +
              s.executables = ["glimmer-cs-gladiator".freeze, "gladiator".freeze, "gladiator-setup".freeze]
         | 
| 18 18 | 
             
              s.extra_rdoc_files = [
         | 
| 19 19 | 
             
                "LICENSE.txt",
         | 
| 20 20 | 
             
                "README.md"
         | 
| @@ -25,20 +25,25 @@ Gem::Specification.new do |s| | |
| 25 25 | 
             
                "README.md",
         | 
| 26 26 | 
             
                "VERSION",
         | 
| 27 27 | 
             
                "bin/gladiator",
         | 
| 28 | 
            -
                "bin/ | 
| 28 | 
            +
                "bin/gladiator-setup",
         | 
| 29 | 
            +
                "bin/glimmer-cs-gladiator",
         | 
| 29 30 | 
             
                "glimmer-cs-gladiator.gemspec",
         | 
| 30 31 | 
             
                "images/glimmer-cs-gladiator-logo.png",
         | 
| 31 32 | 
             
                "lib/glimmer-cs-gladiator.rb",
         | 
| 33 | 
            +
                "lib/glimmer-cs-gladiator/launch.rb",
         | 
| 32 34 | 
             
                "lib/models/glimmer/gladiator/command.rb",
         | 
| 33 35 | 
             
                "lib/models/glimmer/gladiator/dir.rb",
         | 
| 34 36 | 
             
                "lib/models/glimmer/gladiator/file.rb",
         | 
| 35 37 | 
             
                "lib/views/glimmer/gladiator.rb",
         | 
| 36 38 | 
             
                "lib/views/glimmer/gladiator/file_explorer_tree.rb",
         | 
| 37 39 | 
             
                "lib/views/glimmer/gladiator/file_lookup_list.rb",
         | 
| 40 | 
            +
                "lib/views/glimmer/gladiator/gladiator_menu_bar.rb",
         | 
| 41 | 
            +
                "lib/views/glimmer/gladiator/progress_shell.rb",
         | 
| 38 42 | 
             
                "lib/views/glimmer/gladiator/text_editor.rb"
         | 
| 39 43 | 
             
              ]
         | 
| 40 44 | 
             
              s.homepage = "http://github.com/AndyObtiva/glimmer-cs-gladiator".freeze
         | 
| 41 45 | 
             
              s.licenses = ["MIT".freeze]
         | 
| 46 | 
            +
              s.post_install_message = "\nTo make the gladiator command available system-wide (especially with RVM), make sure you run this command with jruby in path: gladiator-setup\n\n".freeze
         | 
| 42 47 | 
             
              s.rubygems_version = "3.0.6".freeze
         | 
| 43 48 | 
             
              s.summary = "Gladiator (Glimmer Editor) - Glimmer Custom Shell - Text Editor Built in Ruby".freeze
         | 
| 44 49 |  | 
| @@ -51,6 +56,7 @@ Gem::Specification.new do |s| | |
| 51 56 | 
             
                  s.add_runtime_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
         | 
| 52 57 | 
             
                  s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
         | 
| 53 58 | 
             
                  s.add_development_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
         | 
| 59 | 
            +
                  s.add_development_dependency(%q<warbler>.freeze, ["= 2.0.5"])
         | 
| 54 60 | 
             
                  s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
         | 
| 55 61 | 
             
                else
         | 
| 56 62 | 
             
                  s.add_dependency(%q<glimmer-dsl-swt>.freeze, [">= 4.18.0.2", "< 5.0.0.0"])
         | 
| @@ -58,6 +64,7 @@ Gem::Specification.new do |s| | |
| 58 64 | 
             
                  s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
         | 
| 59 65 | 
             
                  s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
         | 
| 60 66 | 
             
                  s.add_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
         | 
| 67 | 
            +
                  s.add_dependency(%q<warbler>.freeze, ["= 2.0.5"])
         | 
| 61 68 | 
             
                  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
         | 
| 62 69 | 
             
                end
         | 
| 63 70 | 
             
              else
         | 
| @@ -66,6 +73,7 @@ Gem::Specification.new do |s| | |
| 66 73 | 
             
                s.add_dependency(%q<clipboard>.freeze, ["~> 1.3.5"])
         | 
| 67 74 | 
             
                s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
         | 
| 68 75 | 
             
                s.add_dependency(%q<jeweler>.freeze, ["= 2.3.9"])
         | 
| 76 | 
            +
                s.add_dependency(%q<warbler>.freeze, ["= 2.0.5"])
         | 
| 69 77 | 
             
                s.add_dependency(%q<simplecov>.freeze, [">= 0"])
         | 
| 70 78 | 
             
              end
         | 
| 71 79 | 
             
            end
         | 
    
        data/lib/glimmer-cs-gladiator.rb
    CHANGED
    
    
| @@ -29,6 +29,8 @@ require 'models/glimmer/gladiator/command' | |
| 29 29 | 
             
            require 'views/glimmer/gladiator/text_editor'
         | 
| 30 30 | 
             
            require 'views/glimmer/gladiator/file_lookup_list'
         | 
| 31 31 | 
             
            require 'views/glimmer/gladiator/file_explorer_tree'
         | 
| 32 | 
            +
            require 'views/glimmer/gladiator/gladiator_menu_bar'
         | 
| 33 | 
            +
            require 'views/glimmer/gladiator/progress_shell'
         | 
| 32 34 |  | 
| 33 35 | 
             
            Clipboard.implementation = Clipboard::Java
         | 
| 34 36 | 
             
            Clipboard.copy(Clipboard.paste) # pre-initialize library to avoid slowdown during use
         | 
| @@ -80,7 +82,7 @@ module Glimmer | |
| 80 82 | 
             
                  pane_count && pane_count > 1
         | 
| 81 83 | 
             
                end
         | 
| 82 84 |  | 
| 83 | 
            -
                attr_reader :find_text, :filter_text, :line_number_text, :split_orientation
         | 
| 85 | 
            +
                attr_reader :find_text, :filter_text, :line_number_text, :split_orientation, :tab_folder_sash_form, :side_bar_sash_form, :file_area_and_editor_area_sash_form
         | 
| 84 86 | 
             
                attr_accessor :current_tab_item, :current_tab_folder, :current_text_editor, :tab_folder1, :tab_folder2, :maximized_pane, :maximized_editor
         | 
| 85 87 | 
             
                alias maximized_pane? maximized_pane
         | 
| 86 88 | 
             
                alias maximized_editor? maximized_editor
         | 
| @@ -95,6 +97,7 @@ module Glimmer | |
| 95 97 | 
             
                    project_dir.selected_child&.write_raw_dirty_content
         | 
| 96 98 | 
             
                  end
         | 
| 97 99 | 
             
                  Display.setAppName('Gladiator')
         | 
| 100 | 
            +
                  Display.setAppVersion(VERSION)
         | 
| 98 101 | 
             
                  # make sure the display events are only hooked once if multiple gladiators are created
         | 
| 99 102 | 
             
                  unless defined?(@@display)
         | 
| 100 103 | 
             
                    @@display = display {
         | 
| @@ -228,538 +231,441 @@ module Glimmer | |
| 228 231 | 
             
                ## Top-most widget must be a shell or another custom shell
         | 
| 229 232 | 
             
                #
         | 
| 230 233 | 
             
                body {
         | 
| 231 | 
            -
                   | 
| 232 | 
            -
                     | 
| 233 | 
            -
             | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 236 | 
            -
             | 
| 237 | 
            -
             | 
| 238 | 
            -
                      swt_widget.setSize(@config[:shell_width], @config[:shell_height]) if @config[:shell_width] && @config[:shell_height]
         | 
| 239 | 
            -
                      swt_widget.setLocation(@config[:shell_x], @config[:shell_y]) if @config[:shell_x] && @config[:shell_y]
         | 
| 240 | 
            -
                      @loaded_config = true
         | 
| 234 | 
            +
                  if !::Dir.glob(::File.join(project_dir_path, 'glimmer-cs-gladiator.jar')).empty?
         | 
| 235 | 
            +
                    shell(:no_trim, :no_background) {
         | 
| 236 | 
            +
                      gladiator_menu_bar(gladiator: self, editing: false)
         | 
| 237 | 
            +
                      
         | 
| 238 | 
            +
                      on_swt_show {
         | 
| 239 | 
            +
                        open_project
         | 
| 240 | 
            +
                      }
         | 
| 241 241 | 
             
                    }
         | 
| 242 | 
            -
             | 
| 243 | 
            -
                     | 
| 244 | 
            -
                       | 
| 245 | 
            -
                       | 
| 246 | 
            -
                       | 
| 247 | 
            -
             | 
| 248 | 
            -
             | 
| 242 | 
            +
                  else
         | 
| 243 | 
            +
                    shell {
         | 
| 244 | 
            +
                      text "Gladiator - #{::File.expand_path(project_dir.path)}"
         | 
| 245 | 
            +
                      minimum_size 590, 250
         | 
| 246 | 
            +
                      image ICON
         | 
| 247 | 
            +
                      
         | 
| 248 | 
            +
                      on_swt_show {
         | 
| 249 | 
            +
                        unless @shell_visible
         | 
| 250 | 
            +
                          if @config[:shell_width] && @config[:shell_height]
         | 
| 251 | 
            +
                            swt_widget.set_size(@config[:shell_width], @config[:shell_height])
         | 
| 252 | 
            +
                          else
         | 
| 253 | 
            +
                            swt_widget.set_size(display.bounds.width, display.bounds.height)
         | 
| 254 | 
            +
                          end
         | 
| 249 255 | 
             
                        end
         | 
| 250 | 
            -
                         | 
| 251 | 
            -
             | 
| 252 | 
            -
             | 
| 253 | 
            -
             | 
| 254 | 
            -
                       | 
| 255 | 
            -
                       | 
| 256 | 
            -
                    }
         | 
| 257 | 
            -
                    on_widget_disposed {
         | 
| 258 | 
            -
                      project_dir.selected_child&.write_dirty_content
         | 
| 259 | 
            -
                    }
         | 
| 260 | 
            -
                    on_control_resized {
         | 
| 261 | 
            -
                      save_config
         | 
| 262 | 
            -
                    }
         | 
| 263 | 
            -
                    on_control_moved {
         | 
| 264 | 
            -
                      save_config
         | 
| 265 | 
            -
                    }
         | 
| 266 | 
            -
                    on_shell_deactivated {
         | 
| 267 | 
            -
                      project_dir.selected_child&.write_dirty_content
         | 
| 268 | 
            -
                    }
         | 
| 269 | 
            -
             | 
| 270 | 
            -
                    if OS.mac?
         | 
| 271 | 
            -
                      display.swt_display.system_menu.items.find {|mi| mi.id == swt(:id_quit)}.add_selection_listener {
         | 
| 256 | 
            +
                        swt_widget.setLocation(@config[:shell_x], @config[:shell_y]) if @config[:shell_x] && @config[:shell_y]
         | 
| 257 | 
            +
                        @loaded_config = true
         | 
| 258 | 
            +
                        @shell_visible = true
         | 
| 259 | 
            +
                      }
         | 
| 260 | 
            +
                      
         | 
| 261 | 
            +
                      on_shell_closed {
         | 
| 272 262 | 
             
                        save_config
         | 
| 273 263 | 
             
                        project_dir.selected_child&.write_dirty_content
         | 
| 274 | 
            -
                         | 
| 264 | 
            +
                        if @tab_folder2
         | 
| 265 | 
            +
                          current_tab_folder.swt_widget.getItems.each do |tab_item|
         | 
| 266 | 
            +
                            tab_item.getData('proxy')&.dispose
         | 
| 267 | 
            +
                          end
         | 
| 268 | 
            +
                          close_tab_folder
         | 
| 269 | 
            +
                        end
         | 
| 270 | 
            +
                        current_tab_folder.swt_widget.getItems.each do |tab_item|
         | 
| 271 | 
            +
                          tab_item.getData('proxy')&.dispose
         | 
| 272 | 
            +
                        end
         | 
| 273 | 
            +
                        body_root.close unless current_tab_folder.swt_widget.getItems.empty?
         | 
| 275 274 | 
             
                      }
         | 
| 276 | 
            -
             | 
| 277 | 
            -
             | 
| 278 | 
            -
                    menu_bar {
         | 
| 279 | 
            -
                      menu {
         | 
| 280 | 
            -
                        text '&File'
         | 
| 281 | 
            -
             | 
| 282 | 
            -
                        menu_item {
         | 
| 283 | 
            -
                          text 'New &Scratchpad'
         | 
| 284 | 
            -
                          accelerator COMMAND_KEY, :shift, :s
         | 
| 285 | 
            -
                          on_widget_selected {
         | 
| 286 | 
            -
                            project_dir.selected_child_path = ''
         | 
| 287 | 
            -
                          }
         | 
| 288 | 
            -
                        }
         | 
| 289 | 
            -
                        menu_item {
         | 
| 290 | 
            -
                          text 'Open &Project...'
         | 
| 291 | 
            -
                          accelerator COMMAND_KEY, :o
         | 
| 292 | 
            -
                          on_widget_selected {
         | 
| 293 | 
            -
                            open_project
         | 
| 294 | 
            -
                          }
         | 
| 295 | 
            -
                        }
         | 
| 296 | 
            -
                        menu_item(:separator)
         | 
| 297 | 
            -
                        menu_item {
         | 
| 298 | 
            -
                          text '&Quit Project'
         | 
| 299 | 
            -
                          accelerator COMMAND_KEY, :alt, :q
         | 
| 300 | 
            -
                          on_widget_selected {
         | 
| 301 | 
            -
                            save_config
         | 
| 302 | 
            -
                            project_dir.selected_child&.write_dirty_content
         | 
| 303 | 
            -
                            body_root.close
         | 
| 304 | 
            -
                          }
         | 
| 305 | 
            -
                        }
         | 
| 275 | 
            +
                      on_widget_disposed {
         | 
| 276 | 
            +
                        project_dir.selected_child&.write_dirty_content
         | 
| 306 277 | 
             
                      }
         | 
| 307 | 
            -
                       | 
| 308 | 
            -
                         | 
| 309 | 
            -
                        menu {
         | 
| 310 | 
            -
                          text '&Split Pane'
         | 
| 311 | 
            -
                          menu { |menu_proxy|
         | 
| 312 | 
            -
                            text '&Orientation'
         | 
| 313 | 
            -
                            menu_item(:radio) {
         | 
| 314 | 
            -
                              text '&Horizontal'
         | 
| 315 | 
            -
                              selection bind(self, :split_orientation,
         | 
| 316 | 
            -
                                                    on_read: ->(o) { split_pane? && o == swt(:horizontal) },
         | 
| 317 | 
            -
                                                    on_write: ->(b) { b.nil? ? nil : (b ? swt(:horizontal) : swt(:vertical)) })
         | 
| 318 | 
            -
                            }
         | 
| 319 | 
            -
                            menu_item(:radio) {
         | 
| 320 | 
            -
                              text '&Vertical'
         | 
| 321 | 
            -
                              selection bind(self, :split_orientation,
         | 
| 322 | 
            -
                                                    on_read: ->(o) { split_pane? && o == swt(:vertical) },
         | 
| 323 | 
            -
                                                    on_write: ->(b) { b.nil? ? nil : (b ? swt(:vertical) : swt(:horizontal)) })
         | 
| 324 | 
            -
                            }
         | 
| 325 | 
            -
                          }
         | 
| 326 | 
            -
                          menu_item(:check) {
         | 
| 327 | 
            -
                            text '&Maximize Pane'
         | 
| 328 | 
            -
                            enabled bind(self, :tab_folder2)
         | 
| 329 | 
            -
                            accelerator COMMAND_KEY, :shift, :m
         | 
| 330 | 
            -
                            selection bind(self, :maximized_pane)
         | 
| 331 | 
            -
                          }
         | 
| 332 | 
            -
                          menu_item {
         | 
| 333 | 
            -
                            text 'Reset &Panes'
         | 
| 334 | 
            -
                            enabled bind(self, :tab_folder2)
         | 
| 335 | 
            -
                            accelerator COMMAND_KEY, :shift, :p
         | 
| 336 | 
            -
                            on_widget_selected {
         | 
| 337 | 
            -
                              if tab_folder2
         | 
| 338 | 
            -
                                self.maximized_pane = false
         | 
| 339 | 
            -
                                @tab_folder_sash_form.weights = [1, 1]
         | 
| 340 | 
            -
                              end
         | 
| 341 | 
            -
                            }
         | 
| 342 | 
            -
                          }
         | 
| 343 | 
            -
                          menu_item {
         | 
| 344 | 
            -
                            text '&Unsplit'
         | 
| 345 | 
            -
                            enabled bind(self, :tab_folder2)
         | 
| 346 | 
            -
                            accelerator COMMAND_KEY, :shift, :u
         | 
| 347 | 
            -
                            on_widget_selected {
         | 
| 348 | 
            -
                              if tab_folder2
         | 
| 349 | 
            -
                                self.maximized_pane = false
         | 
| 350 | 
            -
                                navigate_to_next_tab_folder if current_tab_folder != tab_folder2
         | 
| 351 | 
            -
                                close_all_tabs(tab_folder2)
         | 
| 352 | 
            -
                                self.split_orientation = nil
         | 
| 353 | 
            -
                                body_root.pack_same_size
         | 
| 354 | 
            -
                              end
         | 
| 355 | 
            -
                            }
         | 
| 356 | 
            -
                          }
         | 
| 357 | 
            -
                        }
         | 
| 358 | 
            -
                        menu_item(:check) {
         | 
| 359 | 
            -
                          text '&Maximize Editor'
         | 
| 360 | 
            -
                          accelerator COMMAND_KEY, :ctrl, :m
         | 
| 361 | 
            -
                          selection bind(self, :maximized_editor)
         | 
| 362 | 
            -
                        }
         | 
| 363 | 
            -
                        menu_item {
         | 
| 364 | 
            -
                          text '&Reset All'
         | 
| 365 | 
            -
                          accelerator COMMAND_KEY, :ctrl, :r
         | 
| 366 | 
            -
                          on_widget_selected {
         | 
| 367 | 
            -
                            self.maximized_editor = false
         | 
| 368 | 
            -
                            @file_area_and_editor_area_sash_form.weights = [1, 5]
         | 
| 369 | 
            -
                            @side_bar_sash_form.weights = [1, 1]
         | 
| 370 | 
            -
                          }
         | 
| 371 | 
            -
                        }
         | 
| 278 | 
            +
                      on_control_resized {
         | 
| 279 | 
            +
                        save_config
         | 
| 372 280 | 
             
                      }
         | 
| 373 | 
            -
                       | 
| 374 | 
            -
                         | 
| 375 | 
            -
            #             menu_item {
         | 
| 376 | 
            -
            #               text 'Launch Glimmer &App'
         | 
| 377 | 
            -
            #               on_widget_selected {
         | 
| 378 | 
            -
            #                 parent_path = project_dir.path
         | 
| 379 | 
            -
            ##                 current_directory_name = ::File.basename(parent_path)
         | 
| 380 | 
            -
            ##                 assumed_shell_script = ::File.join(parent_path, 'bin', current_directory_name)
         | 
| 381 | 
            -
            ##                 assumed_shell_script = ::Dir.glob(::File.join(parent_path, 'bin', '*')).detect {|f| ::File.file?(f) && !::File.read(f).include?('#!/usr/bin/env')} if !::File.exist?(assumed_shell_script)
         | 
| 382 | 
            -
            ##                 load assumed_shell_script
         | 
| 383 | 
            -
            #                 FileUtils.cd(parent_path) do
         | 
| 384 | 
            -
            #                   system 'glimmer run'
         | 
| 385 | 
            -
            #                 end
         | 
| 386 | 
            -
            #               }
         | 
| 387 | 
            -
            #             }
         | 
| 388 | 
            -
                        menu_item {
         | 
| 389 | 
            -
                          text '&Ruby'
         | 
| 390 | 
            -
                          accelerator COMMAND_KEY, :shift, :r
         | 
| 391 | 
            -
                          on_widget_selected {
         | 
| 392 | 
            -
                            begin
         | 
| 393 | 
            -
                              project_dir.selected_child.run
         | 
| 394 | 
            -
                            rescue Exception => e
         | 
| 395 | 
            -
                              dialog {
         | 
| 396 | 
            -
                                text 'Run - Ruby - Error Encountered!'
         | 
| 397 | 
            -
                                label {
         | 
| 398 | 
            -
                                  text e.full_message
         | 
| 399 | 
            -
                                }
         | 
| 400 | 
            -
                              }.open
         | 
| 401 | 
            -
                            end
         | 
| 402 | 
            -
                          }
         | 
| 403 | 
            -
                        }
         | 
| 281 | 
            +
                      on_control_moved {
         | 
| 282 | 
            +
                        save_config
         | 
| 404 283 | 
             
                      }
         | 
| 405 | 
            -
                       | 
| 406 | 
            -
                         | 
| 407 | 
            -
                        menu_item {
         | 
| 408 | 
            -
                          text '&About'
         | 
| 409 | 
            -
                          accelerator COMMAND_KEY, :shift, :a
         | 
| 410 | 
            -
                          on_widget_selected {
         | 
| 411 | 
            -
                            display_about_dialog
         | 
| 412 | 
            -
                          }
         | 
| 413 | 
            -
                        }
         | 
| 284 | 
            +
                      on_shell_deactivated {
         | 
| 285 | 
            +
                        project_dir.selected_child&.write_dirty_content
         | 
| 414 286 | 
             
                      }
         | 
| 415 | 
            -
             | 
| 416 | 
            -
             | 
| 417 | 
            -
             | 
| 418 | 
            -
             | 
| 419 | 
            -
             | 
| 420 | 
            -
             | 
| 421 | 
            -
                        grid_layout(1, false) {
         | 
| 422 | 
            -
                          margin_width 0
         | 
| 423 | 
            -
                          margin_height 0
         | 
| 287 | 
            +
              
         | 
| 288 | 
            +
                      if OS.mac?
         | 
| 289 | 
            +
                        display.swt_display.system_menu.items.find {|mi| mi.id == swt(:id_quit)}.add_selection_listener {
         | 
| 290 | 
            +
                          save_config
         | 
| 291 | 
            +
                          project_dir.selected_child&.write_dirty_content
         | 
| 292 | 
            +
                          display.swt_display.shells.each(&:close)
         | 
| 424 293 | 
             
                        }
         | 
| 425 | 
            -
             | 
| 426 | 
            -
             | 
| 427 | 
            -
             | 
| 428 | 
            -
             | 
| 429 | 
            -
             | 
| 430 | 
            -
             | 
| 431 | 
            -
             | 
| 432 | 
            -
             | 
| 294 | 
            +
                      end
         | 
| 295 | 
            +
              
         | 
| 296 | 
            +
                      # Menu Bar
         | 
| 297 | 
            +
                      gladiator_menu_bar(gladiator: self, editing: true)
         | 
| 298 | 
            +
                      
         | 
| 299 | 
            +
                      @file_area_and_editor_area_sash_form = sash_form(:horizontal) {
         | 
| 300 | 
            +
                        weights 1, 5
         | 
| 301 | 
            +
              
         | 
| 302 | 
            +
                        composite {
         | 
| 303 | 
            +
                          grid_layout(1, false) {
         | 
| 304 | 
            +
                            margin_width 0
         | 
| 305 | 
            +
                            margin_height 0
         | 
| 433 306 | 
             
                          }
         | 
| 434 307 |  | 
| 435 | 
            -
                          @ | 
| 436 | 
            -
                            layout_data | 
| 437 | 
            -
                             | 
| 438 | 
            -
                            foreground @default_foreground
         | 
| 308 | 
            +
                          @side_bar_sash_form = sash_form(:vertical) {
         | 
| 309 | 
            +
                            layout_data(:fill, :fill, true, true)
         | 
| 310 | 
            +
                            sash_width 4
         | 
| 439 311 |  | 
| 440 | 
            -
                             | 
| 441 | 
            -
                              @file_lookup_expand_item | 
| 312 | 
            +
                            resize_expand_items = lambda { |event=nil|
         | 
| 313 | 
            +
                              @file_lookup_expand_item&.swt_expand_item&.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
         | 
| 314 | 
            +
                              @file_explorer_expand_item&.swt_expand_item&.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
         | 
| 442 315 | 
             
                            }
         | 
| 443 316 |  | 
| 444 | 
            -
                             | 
| 445 | 
            -
             | 
| 446 | 
            -
             | 
| 447 | 
            -
                               | 
| 448 | 
            -
             | 
| 449 | 
            -
             | 
| 317 | 
            +
                            @file_lookup_expand_bar = expand_bar {
         | 
| 318 | 
            +
                              layout_data :fill, :fill, true, true
         | 
| 319 | 
            +
                              font height: 17, style: :bold
         | 
| 320 | 
            +
                              foreground @default_foreground
         | 
| 321 | 
            +
                              
         | 
| 322 | 
            +
                              on_swt_show {
         | 
| 323 | 
            +
                                @file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_bar.size.y - @file_lookup_expand_item.swt_expand_item.header_height
         | 
| 450 324 | 
             
                              }
         | 
| 451 | 
            -
                              text 'File Lookup'
         | 
| 452 | 
            -
                              height display.bounds.height
         | 
| 453 325 |  | 
| 454 | 
            -
                               | 
| 455 | 
            -
             | 
| 456 | 
            -
             | 
| 457 | 
            -
                                 | 
| 458 | 
            -
                                   | 
| 459 | 
            -
             | 
| 460 | 
            -
             | 
| 461 | 
            -
             | 
| 462 | 
            -
             | 
| 463 | 
            -
             | 
| 464 | 
            -
             | 
| 326 | 
            +
                              on_swt_Resize(&resize_expand_items)
         | 
| 327 | 
            +
                              
         | 
| 328 | 
            +
                              @file_lookup_expand_item = expand_item {
         | 
| 329 | 
            +
                                grid_layout {
         | 
| 330 | 
            +
                                  margin_width 0
         | 
| 331 | 
            +
                                  margin_height 0
         | 
| 332 | 
            +
                                }
         | 
| 333 | 
            +
                                text 'File Lookup'
         | 
| 334 | 
            +
                                height display.bounds.height
         | 
| 335 | 
            +
                                
         | 
| 336 | 
            +
                                @filter_text = text {
         | 
| 337 | 
            +
                                  layout_data :fill, :center, true, false
         | 
| 338 | 
            +
                                  text bind(project_dir, 'filter')
         | 
| 339 | 
            +
                                  on_key_pressed { |key_event|
         | 
| 340 | 
            +
                                    if key_event.keyCode == swt(:tab) ||
         | 
| 341 | 
            +
                                        key_event.keyCode == swt(:cr) ||
         | 
| 342 | 
            +
                                        key_event.keyCode == swt(:arrow_up) ||
         | 
| 343 | 
            +
                                        key_event.keyCode == swt(:arrow_down)
         | 
| 344 | 
            +
                                      @file_lookup_list.swt_widget.select(0) if @file_lookup_list.swt_widget.getSelectionIndex() == -1
         | 
| 345 | 
            +
                                      @file_lookup_list.swt_widget.setFocus
         | 
| 346 | 
            +
                                    end
         | 
| 347 | 
            +
                                  }
         | 
| 348 | 
            +
                                }
         | 
| 349 | 
            +
                              
         | 
| 350 | 
            +
                                @file_lookup_list = file_lookup_list(gladiator: self, foreground_color: @default_foreground) {
         | 
| 351 | 
            +
                                  layout_data :fill, :fill, true, true
         | 
| 465 352 | 
             
                                }
         | 
| 466 353 | 
             
                              }
         | 
| 467 | 
            -
             | 
| 468 | 
            -
                               | 
| 469 | 
            -
                                 | 
| 354 | 
            +
                              
         | 
| 355 | 
            +
                              on_item_collapsed { |event|
         | 
| 356 | 
            +
                                if @file_explorer_expand_item.swt_expand_item.get_expanded
         | 
| 357 | 
            +
                                  @file_lookup_expand_item_height = @file_lookup_expand_item.swt_expand_item.height
         | 
| 358 | 
            +
                                  @file_lookup_expand_item.swt_expand_item.height = 0
         | 
| 359 | 
            +
                                  @file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
         | 
| 360 | 
            +
                                  @file_explorer_expand_bar_height = @file_explorer_expand_bar.swt_widget.size.y
         | 
| 361 | 
            +
                                  @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]
         | 
| 362 | 
            +
                                end
         | 
| 470 363 | 
             
                              }
         | 
| 471 | 
            -
                            }
         | 
| 472 | 
            -
                            
         | 
| 473 | 
            -
                            on_item_collapsed { |event|
         | 
| 474 | 
            -
                              if @file_explorer_expand_item.swt_expand_item.get_expanded
         | 
| 475 | 
            -
                                @file_lookup_expand_item_height = @file_lookup_expand_item.swt_expand_item.height
         | 
| 476 | 
            -
                                @file_lookup_expand_item.swt_expand_item.height = 0
         | 
| 477 | 
            -
                                @file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
         | 
| 478 | 
            -
                                @file_explorer_expand_bar_height = @file_explorer_expand_bar.swt_widget.size.y
         | 
| 479 | 
            -
                                @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]
         | 
| 480 | 
            -
                              end
         | 
| 481 | 
            -
                            }
         | 
| 482 | 
            -
                          
         | 
| 483 | 
            -
                            on_item_expanded {
         | 
| 484 | 
            -
                              @file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
         | 
| 485 | 
            -
                              @side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
         | 
| 486 | 
            -
                            }
         | 
| 487 364 |  | 
| 488 | 
            -
             | 
| 489 | 
            -
             | 
| 490 | 
            -
             | 
| 491 | 
            -
             | 
| 492 | 
            -
             | 
| 493 | 
            -
                            foreground @default_foreground
         | 
| 494 | 
            -
                            
         | 
| 495 | 
            -
                            on_swt_show {
         | 
| 496 | 
            -
                              @file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
         | 
| 365 | 
            +
                              on_item_expanded {
         | 
| 366 | 
            +
                                @file_lookup_expand_item.swt_expand_item.height = @file_lookup_expand_item_height if @file_lookup_expand_item_height
         | 
| 367 | 
            +
                                @side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
         | 
| 368 | 
            +
                              }
         | 
| 369 | 
            +
                              
         | 
| 497 370 | 
             
                            }
         | 
| 498 371 |  | 
| 499 | 
            -
                             | 
| 500 | 
            -
             | 
| 501 | 
            -
             | 
| 502 | 
            -
                               | 
| 503 | 
            -
             | 
| 504 | 
            -
             | 
| 372 | 
            +
                            @file_explorer_expand_bar = expand_bar {
         | 
| 373 | 
            +
                              layout_data :fill, :fill, true, true
         | 
| 374 | 
            +
                              font height: 17, style: :bold
         | 
| 375 | 
            +
                              foreground @default_foreground
         | 
| 376 | 
            +
                              
         | 
| 377 | 
            +
                              on_swt_show {
         | 
| 378 | 
            +
                                @file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_bar.size.y - @file_explorer_expand_item.swt_expand_item.header_height
         | 
| 379 | 
            +
                              }
         | 
| 380 | 
            +
                              
         | 
| 381 | 
            +
                              on_swt_Resize(&resize_expand_items)
         | 
| 382 | 
            +
                                          
         | 
| 383 | 
            +
                              @file_explorer_expand_item = expand_item {
         | 
| 384 | 
            +
                                grid_layout {
         | 
| 385 | 
            +
                                  margin_width 0
         | 
| 386 | 
            +
                                  margin_height 0
         | 
| 387 | 
            +
                                }
         | 
| 388 | 
            +
                                text 'File Explorer'
         | 
| 389 | 
            +
                                height display.bounds.height
         | 
| 390 | 
            +
                                
         | 
| 391 | 
            +
                                @file_explorer_tree = file_explorer_tree(gladiator: self, foreground_color: @default_foreground) {
         | 
| 392 | 
            +
                                  layout_data :fill, :fill, true, true
         | 
| 393 | 
            +
                                }
         | 
| 505 394 | 
             
                              }
         | 
| 506 | 
            -
                              text 'File Explorer'
         | 
| 507 | 
            -
                              height display.bounds.height
         | 
| 508 395 |  | 
| 509 | 
            -
                               | 
| 510 | 
            -
                                 | 
| 396 | 
            +
                              on_item_collapsed { |event|
         | 
| 397 | 
            +
                                if @file_lookup_expand_item.swt_expand_item.get_expanded
         | 
| 398 | 
            +
                                  @file_explorer_expand_item_height = @file_explorer_expand_item.swt_expand_item.height
         | 
| 399 | 
            +
                                  @file_explorer_expand_item.swt_expand_item.height = 0
         | 
| 400 | 
            +
                                  @file_explorer_expand_bar_height = @file_explorer_expand_bar.swt_widget.size.y
         | 
| 401 | 
            +
                                  @file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
         | 
| 402 | 
            +
                                  @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]
         | 
| 403 | 
            +
                                end
         | 
| 511 404 | 
             
                              }
         | 
| 512 | 
            -
                            }
         | 
| 513 405 |  | 
| 514 | 
            -
             | 
| 515 | 
            -
             | 
| 516 | 
            -
                                @ | 
| 517 | 
            -
             | 
| 518 | 
            -
             | 
| 519 | 
            -
                                @file_lookup_expand_bar_height = @file_lookup_expand_bar.swt_widget.size.y
         | 
| 520 | 
            -
                                @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]
         | 
| 521 | 
            -
                              end
         | 
| 522 | 
            -
                            }
         | 
| 523 | 
            -
                          
         | 
| 524 | 
            -
                            on_item_expanded {
         | 
| 525 | 
            -
                              @file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
         | 
| 526 | 
            -
                              @side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
         | 
| 406 | 
            +
                              on_item_expanded {
         | 
| 407 | 
            +
                                @file_explorer_expand_item.swt_expand_item.height = @file_explorer_expand_item_height if @file_explorer_expand_item_height
         | 
| 408 | 
            +
                                @side_bar_sash_form.weights = [@file_lookup_expand_bar_height, @file_explorer_expand_bar_height]
         | 
| 409 | 
            +
                              }
         | 
| 410 | 
            +
                              
         | 
| 527 411 | 
             
                            }
         | 
| 528 | 
            -
                            
         | 
| 529 | 
            -
                          }
         | 
| 530 | 
            -
              
         | 
| 531 | 
            -
                        }
         | 
| 532 412 |  | 
| 533 | 
            -
             | 
| 534 | 
            -
             | 
| 535 | 
            -
                      @editor_area_composite = composite {
         | 
| 536 | 
            -
                        grid_layout(1, false) {
         | 
| 537 | 
            -
                          margin_width 0
         | 
| 538 | 
            -
                          margin_height 0
         | 
| 413 | 
            +
                          }
         | 
| 414 | 
            +
                  
         | 
| 539 415 | 
             
                        }
         | 
| 540 416 |  | 
| 541 | 
            -
                        @ | 
| 542 | 
            -
                           | 
| 543 | 
            -
             | 
| 544 | 
            -
             | 
| 417 | 
            +
                        @editor_area_composite = composite {
         | 
| 418 | 
            +
                          grid_layout(1, false) {
         | 
| 419 | 
            +
                            margin_width 0
         | 
| 420 | 
            +
                            margin_height 0
         | 
| 421 | 
            +
                          }
         | 
| 545 422 |  | 
| 546 | 
            -
                          @ | 
| 547 | 
            -
                             | 
| 548 | 
            -
             | 
| 549 | 
            -
              
         | 
| 550 | 
            -
                            grid_layout(5, false) {
         | 
| 551 | 
            -
                              margin_right 5
         | 
| 423 | 
            +
                          @navigation_expand_bar = expand_bar {
         | 
| 424 | 
            +
                            layout_data(:fill, :top, true, false) {
         | 
| 425 | 
            +
                              minimum_width 480
         | 
| 552 426 | 
             
                            }
         | 
| 427 | 
            +
                            font height: 17, style: :bold
         | 
| 428 | 
            +
                            foreground @default_foreground
         | 
| 553 429 |  | 
| 554 | 
            -
                             | 
| 430 | 
            +
                            @navigation_expand_item = expand_item {
         | 
| 431 | 
            +
                              text 'Navigation'
         | 
| 432 | 
            +
                              height 115
         | 
| 555 433 |  | 
| 556 | 
            -
             | 
| 557 | 
            -
             | 
| 558 | 
            -
                            label {
         | 
| 559 | 
            -
                              layout_data(:left, :center, false, false)
         | 
| 560 | 
            -
                              text 'File:'
         | 
| 561 | 
            -
                              foreground @default_foreground
         | 
| 562 | 
            -
                            }
         | 
| 563 | 
            -
                
         | 
| 564 | 
            -
                            @file_path_label = styled_text(:none) {
         | 
| 565 | 
            -
                              layout_data(:fill, :center, true, false) {
         | 
| 566 | 
            -
                                horizontal_span 2
         | 
| 434 | 
            +
                              grid_layout(5, false) {
         | 
| 435 | 
            +
                                margin_right 5
         | 
| 567 436 | 
             
                              }
         | 
| 568 | 
            -
                               | 
| 569 | 
            -
                               | 
| 570 | 
            -
             | 
| 571 | 
            -
                               | 
| 572 | 
            -
             | 
| 573 | 
            -
                               | 
| 574 | 
            -
                                 | 
| 437 | 
            +
                              
         | 
| 438 | 
            +
                              stat_font = {name: 'Consolas', height: OS.mac? ? 15 : 12}
         | 
| 439 | 
            +
                  
         | 
| 440 | 
            +
                              # row 1
         | 
| 441 | 
            +
                  
         | 
| 442 | 
            +
                              label {
         | 
| 443 | 
            +
                                layout_data(:left, :center, false, false)
         | 
| 444 | 
            +
                                text 'File:'
         | 
| 445 | 
            +
                                foreground @default_foreground
         | 
| 575 446 | 
             
                              }
         | 
| 576 | 
            -
             | 
| 577 | 
            -
             | 
| 447 | 
            +
                  
         | 
| 448 | 
            +
                              @file_path_label = styled_text(:none) {
         | 
| 449 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 450 | 
            +
                                  horizontal_span 2
         | 
| 451 | 
            +
                                }
         | 
| 452 | 
            +
                                background color(:widget_background)
         | 
| 453 | 
            +
                                foreground @default_foreground
         | 
| 454 | 
            +
                                editable false
         | 
| 455 | 
            +
                                caret nil
         | 
| 456 | 
            +
                                text bind(project_dir, 'selected_child.path')
         | 
| 457 | 
            +
                                on_mouse_up {
         | 
| 458 | 
            +
                                  @file_path_label.swt_widget.selectAll
         | 
| 459 | 
            +
                                }
         | 
| 460 | 
            +
                                on_focus_lost {
         | 
| 461 | 
            +
                                  @file_path_label.swt_widget.setSelection(0, 0)
         | 
| 462 | 
            +
                                }
         | 
| 578 463 | 
             
                              }
         | 
| 579 | 
            -
             | 
| 580 | 
            -
             | 
| 581 | 
            -
             | 
| 582 | 
            -
             | 
| 583 | 
            -
             | 
| 584 | 
            -
             | 
| 585 | 
            -
             | 
| 586 | 
            -
                            label(:right) {
         | 
| 587 | 
            -
                              layout_data(:fill, :center, true, false)
         | 
| 588 | 
            -
                              text bind(project_dir, 'selected_child.caret_position')
         | 
| 589 | 
            -
                              foreground @default_foreground
         | 
| 590 | 
            -
                              font stat_font
         | 
| 591 | 
            -
                            }
         | 
| 592 | 
            -
                            
         | 
| 593 | 
            -
                            # row 2
         | 
| 594 | 
            -
                
         | 
| 595 | 
            -
                            label {
         | 
| 596 | 
            -
                              layout_data(:left, :center, false, false)
         | 
| 597 | 
            -
                              text 'Line:'
         | 
| 598 | 
            -
                              foreground @default_foreground
         | 
| 599 | 
            -
                            }
         | 
| 600 | 
            -
                            @line_number_text = text {
         | 
| 601 | 
            -
                              layout_data(:fill, :center, true, false) {
         | 
| 602 | 
            -
                                minimum_width 400
         | 
| 464 | 
            +
                                          
         | 
| 465 | 
            +
                              label {
         | 
| 466 | 
            +
                                layout_data(:left, :center, false, false) {
         | 
| 467 | 
            +
                                  minimum_width 100
         | 
| 468 | 
            +
                                }
         | 
| 469 | 
            +
                                text 'Caret Position:'
         | 
| 470 | 
            +
                                foreground @default_foreground
         | 
| 603 471 | 
             
                              }
         | 
| 604 | 
            -
                               | 
| 605 | 
            -
             | 
| 606 | 
            -
             | 
| 607 | 
            -
             | 
| 608 | 
            -
                                 | 
| 609 | 
            -
             | 
| 610 | 
            -
                                 | 
| 472 | 
            +
                              label(:right) {
         | 
| 473 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 474 | 
            +
                                  minimum_width 50
         | 
| 475 | 
            +
                                }
         | 
| 476 | 
            +
                                text bind(project_dir, 'selected_child.caret_position')
         | 
| 477 | 
            +
                                foreground @default_foreground
         | 
| 478 | 
            +
                                font stat_font
         | 
| 611 479 | 
             
                              }
         | 
| 612 | 
            -
                               | 
| 613 | 
            -
             | 
| 480 | 
            +
                              
         | 
| 481 | 
            +
                              # row 2
         | 
| 482 | 
            +
                  
         | 
| 483 | 
            +
                              label {
         | 
| 484 | 
            +
                                layout_data(:left, :center, false, false)
         | 
| 485 | 
            +
                                text 'Line:'
         | 
| 486 | 
            +
                                foreground @default_foreground
         | 
| 614 487 | 
             
                              }
         | 
| 615 | 
            -
             | 
| 616 | 
            -
             | 
| 617 | 
            -
             | 
| 618 | 
            -
             | 
| 619 | 
            -
             | 
| 620 | 
            -
             | 
| 621 | 
            -
             | 
| 622 | 
            -
             | 
| 623 | 
            -
             | 
| 624 | 
            -
             | 
| 625 | 
            -
             | 
| 626 | 
            -
             | 
| 627 | 
            -
             | 
| 628 | 
            -
             | 
| 629 | 
            -
             | 
| 630 | 
            -
             | 
| 631 | 
            -
                
         | 
| 632 | 
            -
                            label {
         | 
| 633 | 
            -
                              layout_data(:left, :center, false, false)
         | 
| 634 | 
            -
                              text 'Find:'
         | 
| 635 | 
            -
                              foreground @default_foreground
         | 
| 636 | 
            -
                            }
         | 
| 637 | 
            -
                            @find_text = text {
         | 
| 638 | 
            -
                              layout_data(:fill, :center, true, false) {
         | 
| 639 | 
            -
                                minimum_width 400
         | 
| 488 | 
            +
                              @line_number_text = text {
         | 
| 489 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 490 | 
            +
                                  width_hint 400
         | 
| 491 | 
            +
                                  minimum_width 100
         | 
| 492 | 
            +
                                }
         | 
| 493 | 
            +
                                text bind(project_dir, 'selected_child.line_number', on_read: :to_s, on_write: :to_i)
         | 
| 494 | 
            +
                                foreground @default_foreground
         | 
| 495 | 
            +
                                font stat_font
         | 
| 496 | 
            +
                                on_key_pressed { |key_event|
         | 
| 497 | 
            +
                                  if key_event.keyCode == swt(:cr)
         | 
| 498 | 
            +
                                    @current_text_editor&.text_widget&.setFocus
         | 
| 499 | 
            +
                                  end
         | 
| 500 | 
            +
                                }
         | 
| 501 | 
            +
                                on_verify_text { |event|
         | 
| 502 | 
            +
                                  event.doit = !event.text.match(/^\d*$/).to_a.empty?
         | 
| 503 | 
            +
                                }
         | 
| 640 504 | 
             
                              }
         | 
| 641 | 
            -
                               | 
| 642 | 
            -
             | 
| 643 | 
            -
                               | 
| 644 | 
            -
             | 
| 645 | 
            -
             | 
| 646 | 
            -
             | 
| 647 | 
            -
             | 
| 648 | 
            -
                                 | 
| 649 | 
            -
                                if key_event.keyCode == swt(:cr)
         | 
| 650 | 
            -
                                  project_dir.selected_child&.find_next
         | 
| 651 | 
            -
                                end
         | 
| 505 | 
            +
                              label # filler
         | 
| 506 | 
            +
                  
         | 
| 507 | 
            +
                              label {
         | 
| 508 | 
            +
                                layout_data(:left, :center, false, false) {
         | 
| 509 | 
            +
                                  minimum_width 100
         | 
| 510 | 
            +
                                }
         | 
| 511 | 
            +
                                text 'Line Position:'
         | 
| 512 | 
            +
                                foreground @default_foreground
         | 
| 652 513 | 
             
                              }
         | 
| 653 | 
            -
             | 
| 654 | 
            -
             | 
| 655 | 
            -
             | 
| 656 | 
            -
             | 
| 657 | 
            -
                                 | 
| 658 | 
            -
                                 | 
| 514 | 
            +
                              label(:right) {
         | 
| 515 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 516 | 
            +
                                  minimum_width 50
         | 
| 517 | 
            +
                                }
         | 
| 518 | 
            +
                                text bind(project_dir, 'selected_child.line_position')
         | 
| 519 | 
            +
                                foreground @default_foreground
         | 
| 520 | 
            +
                                font stat_font
         | 
| 521 | 
            +
                              }
         | 
| 522 | 
            +
                  
         | 
| 523 | 
            +
                              # row 3
         | 
| 524 | 
            +
                  
         | 
| 525 | 
            +
                              label {
         | 
| 526 | 
            +
                                layout_data(:left, :center, false, false)
         | 
| 527 | 
            +
                                text 'Find:'
         | 
| 528 | 
            +
                                foreground @default_foreground
         | 
| 659 529 | 
             
                              }
         | 
| 660 | 
            -
                               | 
| 661 | 
            -
                                 | 
| 530 | 
            +
                              @find_text = text {
         | 
| 531 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 532 | 
            +
                                  width_hint 400
         | 
| 533 | 
            +
                                  minimum_width 100
         | 
| 534 | 
            +
                                }
         | 
| 535 | 
            +
                                text bind(project_dir, 'selected_child.find_text')
         | 
| 536 | 
            +
                                foreground @default_foreground
         | 
| 537 | 
            +
                                font stat_font
         | 
| 662 538 | 
             
                                on_key_pressed { |key_event|
         | 
| 539 | 
            +
                                  if key_event.stateMask == swt(COMMAND_KEY) && key_event.keyCode == swt(:cr)
         | 
| 540 | 
            +
                                    project_dir.selected_child.case_sensitive = !project_dir.selected_child.case_sensitive
         | 
| 541 | 
            +
                                    project_dir.selected_child&.find_next
         | 
| 542 | 
            +
                                  end
         | 
| 663 543 | 
             
                                  if key_event.keyCode == swt(:cr)
         | 
| 664 544 | 
             
                                    project_dir.selected_child&.find_next
         | 
| 665 545 | 
             
                                  end
         | 
| 666 546 | 
             
                                }
         | 
| 667 547 | 
             
                              }
         | 
| 548 | 
            +
                              composite {
         | 
| 549 | 
            +
                                layout_data(:left, :center, true, false) {
         | 
| 550 | 
            +
                                  minimum_width 120
         | 
| 551 | 
            +
                                }
         | 
| 552 | 
            +
                                row_layout {
         | 
| 553 | 
            +
                                  margin_width 0
         | 
| 554 | 
            +
                                  margin_height 0
         | 
| 555 | 
            +
                                }
         | 
| 556 | 
            +
                                button(:check) {
         | 
| 557 | 
            +
                                  selection bind(project_dir, 'selected_child.case_sensitive')
         | 
| 558 | 
            +
                                  on_key_pressed { |key_event|
         | 
| 559 | 
            +
                                    if key_event.keyCode == swt(:cr)
         | 
| 560 | 
            +
                                      project_dir.selected_child&.find_next
         | 
| 561 | 
            +
                                    end
         | 
| 562 | 
            +
                                  }
         | 
| 563 | 
            +
                                }
         | 
| 564 | 
            +
                                label {
         | 
| 565 | 
            +
                                  text 'Case-sensitive'
         | 
| 566 | 
            +
                                  foreground @default_foreground
         | 
| 567 | 
            +
                                }
         | 
| 568 | 
            +
                              }
         | 
| 569 | 
            +
                              
         | 
| 668 570 | 
             
                              label {
         | 
| 669 | 
            -
                                 | 
| 571 | 
            +
                                layout_data(:left, :center, false, false) {
         | 
| 572 | 
            +
                                  minimum_width 100
         | 
| 573 | 
            +
                                }
         | 
| 574 | 
            +
                                text 'Selection Count:'
         | 
| 670 575 | 
             
                                foreground @default_foreground
         | 
| 671 576 | 
             
                              }
         | 
| 672 | 
            -
             | 
| 673 | 
            -
             | 
| 674 | 
            -
             | 
| 675 | 
            -
             | 
| 676 | 
            -
             | 
| 677 | 
            -
             | 
| 678 | 
            -
             | 
| 679 | 
            -
                            label(:right) {
         | 
| 680 | 
            -
                              layout_data(:fill, :center, true, false)
         | 
| 681 | 
            -
                              text bind(project_dir, 'selected_child.selection_count')
         | 
| 682 | 
            -
                              foreground @default_foreground
         | 
| 683 | 
            -
                              font stat_font
         | 
| 684 | 
            -
                            }
         | 
| 685 | 
            -
                            
         | 
| 686 | 
            -
                            # row 4
         | 
| 687 | 
            -
                
         | 
| 688 | 
            -
                            label {
         | 
| 689 | 
            -
                              layout_data(:left, :center, false, false)
         | 
| 690 | 
            -
                              text 'Replace:'
         | 
| 691 | 
            -
                              foreground @default_foreground
         | 
| 692 | 
            -
                            }
         | 
| 693 | 
            -
                            @replace_text = text {
         | 
| 694 | 
            -
                              layout_data(:fill, :center, true, false) {
         | 
| 695 | 
            -
                                minimum_width 400
         | 
| 577 | 
            +
                              label(:right) {
         | 
| 578 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 579 | 
            +
                                  minimum_width 50
         | 
| 580 | 
            +
                                }
         | 
| 581 | 
            +
                                text bind(project_dir, 'selected_child.selection_count')
         | 
| 582 | 
            +
                                foreground @default_foreground
         | 
| 583 | 
            +
                                font stat_font
         | 
| 696 584 | 
             
                              }
         | 
| 697 | 
            -
                               | 
| 698 | 
            -
                               | 
| 699 | 
            -
             | 
| 700 | 
            -
                               | 
| 701 | 
            -
                                 | 
| 585 | 
            +
                              
         | 
| 586 | 
            +
                              # row 4
         | 
| 587 | 
            +
                  
         | 
| 588 | 
            +
                              label {
         | 
| 589 | 
            +
                                layout_data(:left, :center, false, false)
         | 
| 590 | 
            +
                                text 'Replace:'
         | 
| 591 | 
            +
                                foreground @default_foreground
         | 
| 702 592 | 
             
                              }
         | 
| 703 | 
            -
                               | 
| 704 | 
            -
                                 | 
| 705 | 
            -
                                   | 
| 706 | 
            -
             | 
| 593 | 
            +
                              @replace_text = text {
         | 
| 594 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 595 | 
            +
                                  width_hint 400
         | 
| 596 | 
            +
                                  minimum_width 100
         | 
| 597 | 
            +
                                }
         | 
| 598 | 
            +
                                text bind(project_dir, 'selected_child.replace_text')
         | 
| 599 | 
            +
                                foreground @default_foreground
         | 
| 600 | 
            +
                                font stat_font
         | 
| 601 | 
            +
                                on_focus_gained {
         | 
| 602 | 
            +
                                  project_dir.selected_child&.ensure_find_next
         | 
| 603 | 
            +
                                }
         | 
| 604 | 
            +
                                on_key_pressed { |key_event|
         | 
| 605 | 
            +
                                  if key_event.keyCode == swt(:cr)
         | 
| 606 | 
            +
                                    if project_dir.selected_child
         | 
| 607 | 
            +
                                      Command.do(project_dir.selected_child, :replace_next!)
         | 
| 608 | 
            +
                                    end
         | 
| 707 609 | 
             
                                  end
         | 
| 708 | 
            -
                                 | 
| 610 | 
            +
                                }
         | 
| 611 | 
            +
                              }
         | 
| 612 | 
            +
                              label # filler
         | 
| 613 | 
            +
                              label {
         | 
| 614 | 
            +
                                layout_data(:left, :center, false, false) {
         | 
| 615 | 
            +
                                  minimum_width 100
         | 
| 616 | 
            +
                                }
         | 
| 617 | 
            +
                                text 'Top Pixel:'
         | 
| 618 | 
            +
                                foreground @default_foreground
         | 
| 619 | 
            +
                              }
         | 
| 620 | 
            +
                              label(:right) {
         | 
| 621 | 
            +
                                layout_data(:fill, :center, true, false) {
         | 
| 622 | 
            +
                                  minimum_width 50
         | 
| 623 | 
            +
                                }
         | 
| 624 | 
            +
                                text bind(project_dir, 'selected_child.top_pixel')
         | 
| 625 | 
            +
                                foreground @default_foreground
         | 
| 626 | 
            +
                                font stat_font
         | 
| 709 627 | 
             
                              }
         | 
| 710 628 | 
             
                            }
         | 
| 711 | 
            -
                             | 
| 712 | 
            -
                             | 
| 713 | 
            -
                               | 
| 714 | 
            -
                              text 'Top Pixel:'
         | 
| 715 | 
            -
                              foreground @default_foreground
         | 
| 629 | 
            +
                            
         | 
| 630 | 
            +
                            on_item_collapsed {
         | 
| 631 | 
            +
                              collapse_navigation_expand_bar_height
         | 
| 716 632 | 
             
                            }
         | 
| 717 | 
            -
             | 
| 718 | 
            -
             | 
| 719 | 
            -
                               | 
| 720 | 
            -
                              foreground @default_foreground
         | 
| 721 | 
            -
                              font stat_font
         | 
| 633 | 
            +
                          
         | 
| 634 | 
            +
                            on_item_expanded {
         | 
| 635 | 
            +
                              expand_navigation_expand_bar_height
         | 
| 722 636 | 
             
                            }
         | 
| 723 | 
            -
                          }
         | 
| 724 637 |  | 
| 725 | 
            -
                          on_item_collapsed {
         | 
| 726 | 
            -
                            collapse_navigation_expand_bar_height
         | 
| 727 | 
            -
                          }
         | 
| 728 | 
            -
                        
         | 
| 729 | 
            -
                          on_item_expanded {
         | 
| 730 | 
            -
                            expand_navigation_expand_bar_height
         | 
| 731 | 
            -
                          }
         | 
| 732 | 
            -
                        
         | 
| 733 | 
            -
                        }
         | 
| 734 | 
            -
                        
         | 
| 735 | 
            -
                        @tab_folder_sash_form = sash_form {
         | 
| 736 | 
            -
                          layout_data(:fill, :fill, true, true) {
         | 
| 737 | 
            -
                            width_hint 768
         | 
| 738 | 
            -
                            height_hint 576
         | 
| 739 | 
            -
                            minimum_width 768
         | 
| 740 | 
            -
                            minimum_height 576
         | 
| 741 638 | 
             
                          }
         | 
| 742 | 
            -
                           | 
| 743 | 
            -
                           | 
| 744 | 
            -
                             | 
| 745 | 
            -
                               | 
| 746 | 
            -
                               | 
| 747 | 
            -
                               | 
| 748 | 
            -
             | 
| 749 | 
            -
             | 
| 750 | 
            -
             | 
| 751 | 
            -
             | 
| 752 | 
            -
                               | 
| 753 | 
            -
             | 
| 754 | 
            -
                                 | 
| 639 | 
            +
                          
         | 
| 640 | 
            +
                          @tab_folder_sash_form = sash_form {
         | 
| 641 | 
            +
                            layout_data(:fill, :fill, true, true) {
         | 
| 642 | 
            +
                              width_hint 768
         | 
| 643 | 
            +
                              height_hint 576
         | 
| 644 | 
            +
                              minimum_width 168
         | 
| 645 | 
            +
                              minimum_height 176
         | 
| 646 | 
            +
                            }
         | 
| 647 | 
            +
                            orientation bind(self, :split_orientation) {|value| async_exec { body_root.pack_same_size}; value}
         | 
| 648 | 
            +
                            self.current_tab_folder = self.tab_folder1 = tab_folder {
         | 
| 649 | 
            +
                              drag_source(DND::DROP_COPY) {
         | 
| 650 | 
            +
                                transfer [TextTransfer.getInstance].to_java(Transfer)
         | 
| 651 | 
            +
                                event_data = nil
         | 
| 652 | 
            +
                                on_drag_start {|event|
         | 
| 653 | 
            +
                                  Gladiator.drag = true
         | 
| 654 | 
            +
                                  tab_folder = event.widget.getControl
         | 
| 655 | 
            +
                                  tab_item = tab_folder.getItem(Point.new(event.x, event.y))
         | 
| 656 | 
            +
                                  event_data = tab_item.getData('file_path')
         | 
| 657 | 
            +
                                }
         | 
| 658 | 
            +
                                on_drag_set_data { |event|
         | 
| 659 | 
            +
                                  event.data = event_data
         | 
| 660 | 
            +
                                }
         | 
| 755 661 | 
             
                              }
         | 
| 756 662 | 
             
                            }
         | 
| 663 | 
            +
                            @current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
         | 
| 757 664 | 
             
                          }
         | 
| 758 | 
            -
                          @current_tab_folder.swt_widget.setData('proxy', @current_tab_folder)
         | 
| 759 665 | 
             
                        }
         | 
| 760 | 
            -
                      }
         | 
| 761 | 
            -
                    } | 
| 762 | 
            -
                   | 
| 666 | 
            +
                      } # end of sash form
         | 
| 667 | 
            +
                    }
         | 
| 668 | 
            +
                  end
         | 
| 763 669 | 
             
                }
         | 
| 764 670 |  | 
| 765 671 | 
             
                def load_config_ignore_paths
         | 
| @@ -785,22 +691,10 @@ module Glimmer | |
| 785 691 | 
             
                    open_file_paths1 = @config[:open_file_paths1] || @config[:open_file_paths]
         | 
| 786 692 | 
             
                    open_file_paths2 = @config[:open_file_paths2]
         | 
| 787 693 | 
             
                    self.split_orientation = (swt(@config[:split_orientation]) rescue swt(:horizontal)) if @config[:split_orientation]
         | 
| 788 | 
            -
                    if @ | 
| 789 | 
            -
                      @ | 
| 790 | 
            -
                        text 'Gladiator'
         | 
| 791 | 
            -
                        fill_layout(:vertical) {
         | 
| 792 | 
            -
                          margin_width 15
         | 
| 793 | 
            -
                          margin_height 15
         | 
| 794 | 
            -
                          spacing 5
         | 
| 795 | 
            -
                        }
         | 
| 796 | 
            -
                        label(:center) {
         | 
| 797 | 
            -
                          text "Opening Last Open Files"
         | 
| 798 | 
            -
                          font height: 20
         | 
| 799 | 
            -
                        }
         | 
| 800 | 
            -
                #         @progress_bar = progress_bar(:horizontal, :indeterminate)
         | 
| 801 | 
            -
                      }
         | 
| 694 | 
            +
                    if @progress_shell.nil?
         | 
| 695 | 
            +
                      @progress_shell = progress_shell(gladiator: self, progress_text: 'Opening Last Open Files')
         | 
| 802 696 | 
             
                      async_exec {
         | 
| 803 | 
            -
                        @ | 
| 697 | 
            +
                        @progress_shell.open
         | 
| 804 698 | 
             
                      }
         | 
| 805 699 | 
             
                    end
         | 
| 806 700 | 
             
                    open_file_paths1.to_a.each do |file_path|
         | 
| @@ -842,8 +736,8 @@ module Glimmer | |
| 842 736 | 
             
                      }
         | 
| 843 737 | 
             
                      async_exec {
         | 
| 844 738 | 
             
                        Gladiator.drag = false
         | 
| 845 | 
            -
                        @ | 
| 846 | 
            -
                        @ | 
| 739 | 
            +
                        @progress_shell&.close
         | 
| 740 | 
            +
                        @progress_shell = nil
         | 
| 847 741 | 
             
                        @loaded_config = true
         | 
| 848 742 | 
             
                      }
         | 
| 849 743 | 
             
                    }
         | 
| @@ -861,7 +755,7 @@ module Glimmer | |
| 861 755 | 
             
                end
         | 
| 862 756 |  | 
| 863 757 | 
             
                def save_config
         | 
| 864 | 
            -
                  return if !@loaded_config || body_root | 
| 758 | 
            +
                  return if !@loaded_config || body_root&.disposed?
         | 
| 865 759 | 
             
                  child = project_dir.selected_child
         | 
| 866 760 | 
             
                  return if child.nil?
         | 
| 867 761 | 
             
                  tab_folder1 = @tab_folder1 || @current_tab_folder
         | 
| @@ -988,27 +882,15 @@ module Glimmer | |
| 988 882 | 
             
                def open_project
         | 
| 989 883 | 
             
                  selected_directory = directory_dialog.open
         | 
| 990 884 | 
             
                  return if selected_directory.nil?
         | 
| 991 | 
            -
                  @ | 
| 992 | 
            -
                    text 'Gladiator'
         | 
| 993 | 
            -
                    fill_layout(:vertical) {
         | 
| 994 | 
            -
                      margin_width 15
         | 
| 995 | 
            -
                      margin_height 15
         | 
| 996 | 
            -
                      spacing 5
         | 
| 997 | 
            -
                    }
         | 
| 998 | 
            -
                    label(:center) {
         | 
| 999 | 
            -
                      text "Opening Project: #{::File.basename(selected_directory)}"
         | 
| 1000 | 
            -
                      font height: 20
         | 
| 1001 | 
            -
                    }
         | 
| 1002 | 
            -
            #         @progress_bar = progress_bar(:horizontal, :indeterminate)
         | 
| 1003 | 
            -
                  }
         | 
| 885 | 
            +
                  @progress_shell = progress_shell(gladiator: self, progress_text: "Opening Project: #{::File.basename(selected_directory)}")
         | 
| 1004 886 | 
             
                  async_exec {
         | 
| 1005 | 
            -
                    @ | 
| 887 | 
            +
                    @progress_shell.open
         | 
| 1006 888 | 
             
                  }
         | 
| 1007 889 | 
             
                  async_exec {
         | 
| 1008 890 | 
             
                    gladiator(project_dir_path: selected_directory) {
         | 
| 1009 891 | 
             
                      on_swt_show {
         | 
| 1010 | 
            -
                        @ | 
| 1011 | 
            -
                        @ | 
| 892 | 
            +
                        @progress_shell.close
         | 
| 893 | 
            +
                        @progress_shell = nil
         | 
| 1012 894 | 
             
                      }
         | 
| 1013 895 | 
             
                    }.open if selected_directory
         | 
| 1014 896 | 
             
                  }
         | 
| @@ -1033,7 +915,7 @@ module Glimmer | |
| 1033 915 | 
             
                    label {
         | 
| 1034 916 | 
             
                      layout_data :fill, :fill, true, true
         | 
| 1035 917 | 
             
                      background :white
         | 
| 1036 | 
            -
                      text "Gladiator v#{VERSION}\n\n#{LICENSE}\n\nGladiator icon made by Freepik from www.flaticon.com"
         | 
| 918 | 
            +
                      text "Gladiator v#{VERSION} (Beta)\n\n#{LICENSE}\n\nGladiator icon made by Freepik from www.flaticon.com"
         | 
| 1037 919 | 
             
                    }
         | 
| 1038 920 | 
             
                  }.open
         | 
| 1039 921 | 
             
                end
         |