module Lebowski::SCUI::Mixins::NodeItemViewSupport

Public Instance Methods

drag_above(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 71
def drag_above(item)
  drag_relative_to_node(item, false, -1)
end
drag_below(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 75
def drag_below(item)
  drag_relative_to_node(item, false)
end
drag_in_canvas(x, y) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 59
def drag_in_canvas(x, y)
  self.drag_to(@parent, x, y)
end
drag_left_of(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 63
def drag_left_of(item)
  drag_relative_to_node(item, true, -1)
end
drag_right_of(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 67
def drag_right_of(item)
  drag_relative_to_node(item, true)
end
has_node_item_view_support() click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 13
def has_node_item_view_support
  return true
end
linked_to?(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 32
def linked_to?(item)
  node_item_view = get_node_item_view(item)
  comparison_node = node_item_view['content']
  my_node = self['content']
  
  links.each { |link| return true if (link.start_node == comparison_node) || (link.end_node == comparison_node) }
  node_item_view.links.each { |link| return true if (link.start_node == my_node) || (link.end_node == my_node) }

  return false
end
positioned_above?(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 51
def positioned_above?(item)
  verify_positioning(item, false, -1)
end
positioned_below?(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 55
def positioned_below?(item)
  verify_positioning(item, false)
end
positioned_left_of?(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 43
def positioned_left_of?(item)
  verify_positioning(item, true, -1)
end
positioned_right_of?(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 47
def positioned_right_of?(item)
  verify_positioning(item, true)
end
terminal_by_name(name) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 17
def terminal_by_name(name)
  terminal = terminals.find_first({ :terminal => name })
  raise ArgumentError.new "There is no terminal with the name #{name}." if terminal.nil?
  return terminal
end
terminals() click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 23
def terminals
  @terminals = Support::TerminalViewArray.new(self) if @terminals.nil?
  return @terminals
end

Private Instance Methods

assert_item_has_node_item_view_support(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 109
def assert_item_has_node_item_view_support(item)
  if not item.respond_to? :has_node_item_view_support
    raise ArgumentError.new "The item passed in must have node item view support (#{NodeItemViewSupport})"
  end
end
drag_relative_to_node(item, horizontal_drag, multiplier = 1) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 91
def drag_relative_to_node(item, horizontal_drag, multiplier = 1)
  fixed_node = get_node_item_view(item)
        
  x = horizontal_drag ? (fixed_node.frame.width + 50) * multiplier : 0
  y = horizontal_drag ? 0 : (fixed_node.frame.height + 50) * multiplier
        
  self.drag_to(fixed_node, x, y)
end
get_node_item_view(item) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 80
def get_node_item_view(item)
  if item.kind_of? Integer
    fixed_node = @parent.item_views[item]
    raise ArgumentError.new "There is no node at index #{item}" if fixed_node.nil?
    return fixed_node
  else
    assert_item_has_node_item_view_support(item)
    return item
  end
end
verify_positioning(item, horizontal_drag, multiplier = 1) click to toggle source
# File lib/lebowski/scui/mixins/node_item_view_support.rb, line 100
def verify_positioning(item, horizontal_drag, multiplier = 1)
  fixed_node = get_node_item_view(item)
  x = horizontal_drag ? (fixed_node.position.x + (50 + fixed_node.frame.width) * multiplier) : fixed_node.position.x
  y = horizontal_drag ? fixed_node.position.y : (fixed_node.position.y + (50 + fixed_node.frame.height) * multiplier)
        
  return true if (self.position.x == x) && (self.position.y == y)
  return false
end