Skip to content

Commit

Permalink
Add a callback for right clicks on a tree
Browse files Browse the repository at this point in the history
  • Loading branch information
danlucraft committed Jun 8, 2010
1 parent fed0676 commit ce25454
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 1 deletion.
13 changes: 13 additions & 0 deletions CHANGES
@@ -1,4 +1,17 @@

Version 0.3.7 (8 Jun 2010)
==========================

Enhancements:

New APIS:

* Context menu callback for trees (Dan Lucraft)

New contributors:



Version 0.3.6 (5 Jun 2010)
==========================

Expand Down
4 changes: 4 additions & 0 deletions plugins/project/lib/project/dir_controller.rb
Expand Up @@ -7,6 +7,10 @@ def activated(node)
FileOpenCommand.new(node.path).run
end
end

def right_click(node)
p [:dir_controller, :right_click, node]
end
end
end
end
Expand Down
4 changes: 4 additions & 0 deletions plugins/tree/lib/tree/controller.rb
Expand Up @@ -7,6 +7,10 @@ module Controller
def activated(node)
raise "not implemented"
end

def right_click(node=nil)
raise "not implemented"
end
end
end
end
31 changes: 30 additions & 1 deletion plugins/tree_view_swt/lib/tree_view_swt.rb
Expand Up @@ -23,6 +23,7 @@ def initialize(composite, model)
@viewer.add_tree_listener(@viewer.getControl, TreeListener.new)
@viewer.add_double_click_listener(DoubleClickListener.new)
@viewer.add_open_listener(OpenListener.new(@model.tree_controller))
control.add_mouse_listener(MouseListener.new(self))
end

@model.add_listener(:refresh) do
Expand All @@ -41,13 +42,24 @@ def initialize(composite, model)
end

def control
@viewer.getControl
@viewer.get_control
end

def close
@viewer.getControl.dispose
end

def right_click(mouse_event)
if @model.tree_controller
point = Swt::Graphics::Point.new(mouse_event.x, mouse_event.y)
item = @viewer.get_item_at(point)
element = @viewer.getViewerRowFromItem(item).get_element
if @model.tree_controller.respond_to?(:right_click)
@model.tree_controller.right_click(element)
end
end
end

class TreeListener
def tree_collapsed(e)
end
Expand All @@ -64,6 +76,22 @@ def widget_selected(e)
end
end

class MouseListener
def initialize(tree_view_swt)
@tree_view_swt = tree_view_swt
end

def mouse_double_click(_); end
def mouse_up(_)
end

def mouse_down(e)
if e.button == 3
@tree_view_swt.right_click(e)
end
end
end

class DoubleClickListener
def double_click(e)

Expand All @@ -89,6 +117,7 @@ def initialize(controller)
end

def open(e)
p e.getSelection.toArray.to_a.first
@controller.activated(e.getSelection.toArray.to_a.first)
end
end
Expand Down

0 comments on commit ce25454

Please sign in to comment.