class DYI::GraphicalElement

Abstract class that represents a graphic element. @abstract @since 1.0.0

Constants

CLASS_REGEXP

Attributes

css_class[R]

Returns a CSS class attribute of the element. @return [String] a class name or set of class names. If the elements has

multiple class names, class names are separated by white space

Public Instance Methods

add_css_class(css_class) click to toggle source

Adds a CSS class. @param [String] css_class a CSS class name @return [String, nil] value of parameter ‘css_class’ if successes to add

a class, nil if failures

@raise [ArgumentError] parameter ‘css_class’ is illegal class name

# File lib/dyi/element.rb, line 134
def add_css_class(css_class)
  if css_class.to_s !~ CLASS_REGEXP
    raise ArgumentError, "`#{css_class}' is a illegal class-name"
  end
  if css_classes.include?(css_class.to_s)
    return nil
  end
  @css_class = css_classes.push(css_class).join(' ')
  css_class
end
add_event_listener(event_name, listener) click to toggle source

Registers event listeners on this element. @param [Symbol] event_name an event name for which the user is registering @param [Script::EcmaScript::EventListener, to_s] listener an event listener which contains

the methods to be called when the event occurs.
# File lib/dyi/element.rb, line 184
def add_event_listener(event_name, listener)
  unless listener.respond_to?(:related_to)
    listener = DYI::Script::EcmaScript::EventListener.new(listener.to_s)
  end
  listener.related_to(DYI::Event.new(event_name, self))
  if event_listeners.key?(event_name)
    unless event_listeners[event_name].include?(listener)
      event_listeners[event_name] << listener
      canvas.add_script(listener)
    end
  else
    event_listeners[event_name] = [listener]
    canvas.add_script(listener)
  end
end
css_class=(css_class) click to toggle source

Sets a CSS class attribute. @param [String] css_class a CSS class attribute @see {#css_class} @raise [ArgumentError] parameter ‘css_class’ is illegal class name

# File lib/dyi/element.rb, line 112
def css_class=(css_class)
  return @css_class = nil if css_class.nil?
  classes = css_class.to_s.split(/\s+/)
  classes.each do |c|
    if c.to_s !~ CLASS_REGEXP
      raise ArgumentError, "`#{c}' is a illegal class-name"
    end
  end
  @css_class = classes.join(' ')
end
css_classes() click to toggle source

Returns an array of CSS class names. @return [Array<String>] an array of CSS class names

# File lib/dyi/element.rb, line 125
def css_classes
  css_class.to_s.split(/\s+/)
end
event_listeners() click to toggle source

Returns event listeners that is associated with the element. @return [Hash] hash of event listeners

# File lib/dyi/element.rb, line 161
def event_listeners
  @event_listeners ||= {}
end
event_target?() click to toggle source

Returns whether an event is set to the element. @return [Boolean] true if an event is set to the element, false otherwise

# File lib/dyi/element.rb, line 176
def event_target?
  !(@events.nil? || @events.empty?)
end
remove_css_class(css_class) click to toggle source

Remove a CSS class. @param [String] css_class a CSS class name that will be removed @return [String, nil] value of parameter ‘css_class’ if successes to

remove a class, nil if failures
# File lib/dyi/element.rb, line 149
def remove_css_class(css_class)
  classes = css_classes
  if classes.delete(css_class.to_s)
    @css_class = classes.empty? ? nil : classes.join(' ')
    css_class
  else
    nil
  end
end
remove_event_listener(event_name, listener) click to toggle source

Removes event listeners from this element. @param [Symbol] event_name an event name for which the user is registering @param [Script::SimpleScript] listener an event listener to be removed

# File lib/dyi/element.rb, line 203
def remove_event_listener(event_name, listener)
  if event_listeners.key?(event_name)
    event_listeners[event_name].delete(listener)
  end
end
set_event(event) click to toggle source

Sets an event to this element. @param [Event] event an event that is set to the element @return [String] id for this element

# File lib/dyi/element.rb, line 168
def set_event(event)
  @events ||= []
  @events << event
  publish_id
end
to_reused_source() click to toggle source

@since 1.3.0

# File lib/dyi/element.rb, line 210
def to_reused_source
  publish_id
  self
end