Class: Aidp::Harness::UI::Navigation::MenuItem

Inherits:
Object
  • Object
show all
Defined in:
lib/aidp/harness/ui/navigation/menu_item.rb

Overview

Represents a single menu item in the navigation system

Defined Under Namespace

Classes: InvalidTypeError, MenuItemError

Constant Summary collapse

VALID_TYPES =
[:action, :submenu, :workflow, :separator].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title, type = :action, options = {}) ⇒ MenuItem

Returns a new instance of MenuItem.



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 15

def initialize(title, type = :action, options = {})
  @title = title
  @type = type
  @action = options[:action]
  @workflow = options[:workflow]
  @submenu = options[:submenu]
  @description = options[:description]
  @shortcut = options[:shortcut]
  @enabled = options.fetch(:enabled, true)
  @visible = options.fetch(:visible, true)

  validate_attributes
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action.



29
30
31
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 29

def action
  @action
end

#descriptionObject (readonly)

Returns the value of attribute description.



29
30
31
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 29

def description
  @description
end

#enabledObject

Returns the value of attribute enabled.



30
31
32
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 30

def enabled
  @enabled
end

#shortcutObject (readonly)

Returns the value of attribute shortcut.



29
30
31
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 29

def shortcut
  @shortcut
end

Returns the value of attribute submenu.



29
30
31
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 29

def submenu
  @submenu
end

#titleObject (readonly)

Returns the value of attribute title.



29
30
31
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 29

def title
  @title
end

#typeObject (readonly)

Returns the value of attribute type.



29
30
31
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 29

def type
  @type
end

#visibleObject

Returns the value of attribute visible.



30
31
32
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 30

def visible
  @visible
end

#workflowObject (readonly)

Returns the value of attribute workflow.



29
30
31
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 29

def workflow
  @workflow
end

Instance Method Details

#action?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 32

def action?
  @type == :action
end

#disabled?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 56

def disabled?
  !enabled?
end

#enabled?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 48

def enabled?
  @enabled
end

#executeObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 64

def execute
  case @type
  when :action
    execute_action
  when :workflow
    execute_workflow
  when :submenu
    execute_submenu
  when :separator
    execute_separator
  else
    raise InvalidTypeError, "Unknown menu item type: #{@type}"
  end
end

#hidden?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 60

def hidden?
  !visible?
end

#separator?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 44

def separator?
  @type == :separator
end

Returns:

  • (Boolean)


36
37
38
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 36

def submenu?
  @type == :submenu
end

#to_sObject



79
80
81
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 79

def to_s
  "#{@title} (#{@type})"
end

#visible?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 52

def visible?
  @visible
end

#workflow?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/aidp/harness/ui/navigation/menu_item.rb', line 40

def workflow?
  @type == :workflow
end