class DYI::GraphicalElement
Abstract class that represents a graphic element. @abstract @since 1.0.0
Constants
- CLASS_REGEXP
Attributes
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
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
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
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
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
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
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 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
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
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
@since 1.3.0
# File lib/dyi/element.rb, line 210 def to_reused_source publish_id self end