Sha256: 6bc74453d14e5c683794688c24ed59826595e62a0e55d18407049b1595e3087f

Contents?: true

Size: 1.98 KB

Versions: 22

Compression:

Stored size: 1.98 KB

Contents

module Redcar
  class ApplicationSWT
    class Treebook
      
      def initialize(window, model)
        @window, @model = window, model
        add_listeners
        create_tree_view
      end
      
      def add_listeners
        @model.add_listener(:tree_added,   &method(:tree_added))
        @model.add_listener(:tree_removed, &method(:tree_removed))
        @model.add_listener(:tree_focussed, &method(:tree_focussed))
      end

      def tree_added(tree)
        tree_view = TreeViewSWT.new(@tree_composite, tree)
        tree.controller = tree_view
        title = tree.tree_mirror.title
        @tree_combo.add(title)
        @tree_combo.select(@tree_combo.get_items.to_a.index(title))
        @tree_layout.topControl = tree_view.control
        @tree_composite.layout
      end
      
      def tree_removed(tree)
        tree.controller.close
        @tree_combo.remove(tree.tree_mirror.title)
      end
      
      def tree_focussed(tree)
        @tree_layout.topControl = tree.controller.control
        @tree_composite.layout
        @tree_combo.select(@tree_combo.get_items.to_a.index(tree.tree_mirror.title))
      end

      def create_tree_view
        @tree_composite = Swt::Widgets::Composite.new(@window.tree_sash, Swt::SWT::NONE)
        @tree_layout = Swt::Custom::StackLayout.new
        @tree_composite.setLayout(@tree_layout)
        
        @tree_combo = Swt::Widgets::Combo.new(@window.left_composite, Swt::SWT::READ_ONLY)
        grid_data = Swt::Layout::GridData.new
        grid_data.grabExcessHorizontalSpace = true
        grid_data.horizontalAlignment = Swt::Layout::GridData::FILL
        grid_data.grabExcessVerticalSpace = false
      	@tree_combo.setLayoutData(grid_data)
        @tree_combo.add_selection_listener do
          selected_tree = @model.trees.detect {|t| t.tree_mirror.title == @tree_combo.text}
          @model.focus_tree(selected_tree)
        end
        
        @tree_composite.layout
        @window.left_composite.layout
      end
      
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
redcar-0.6.1 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.6 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.6.1dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5.1 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5.6dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5.5dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5.4dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5.3dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5.2dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.5.1dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.4.1 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.4 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.3.10.1dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.3.10.0dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.3.9 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.3.9.0dev plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.3.8.4 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.3.8.3 plugins/application_swt/lib/application_swt/treebook.rb
redcar-0.3.8.2 plugins/application_swt/lib/application_swt/treebook.rb