Class: DYI::GraphicalElement Abstract
Overview
Abstract class that represents a graphic element.
Direct Known Subclasses
Constant Summary collapse
- CLASS_REGEXP =
/\A[A-Z_a-z][\-0-9A-Z_a-z]*\z/
Constants inherited from Element
Instance Attribute Summary collapse
-
#css_class ⇒ String
Returns a CSS class attribute of the element.
Attributes inherited from Element
Instance Method Summary collapse
-
#add_css_class(css_class) ⇒ String?
Adds a CSS class.
-
#add_event_listener(event_name, listener) ⇒ Object
Registers event listeners on this element.
-
#css_classes ⇒ Array<String>
Returns an array of CSS class names.
-
#event_listeners ⇒ Hash
Returns event listeners that is associated with the element.
-
#event_target? ⇒ Boolean
Returns whether an event is set to the element.
-
#remove_css_class(css_class) ⇒ String?
Remove a CSS class.
-
#remove_event_listener(event_name, listener) ⇒ Object
Removes event listeners from this element.
-
#set_event(event) ⇒ String
Sets an event to this element.
- #to_reused_source ⇒ Object
Methods inherited from Element
#canvas, #child_elements, #has_uri_reference?, #id, #id=, #include_external_file?, #inner_id
Instance Attribute Details
#css_class ⇒ String
Returns a CSS class attribute of the element.
105 106 107 |
# File 'lib/dyi/element.rb', line 105 def css_class @css_class end |
Instance Method Details
#add_css_class(css_class) ⇒ String?
Adds a CSS class.
135 136 137 138 139 140 141 142 143 144 |
# File 'lib/dyi/element.rb', line 135 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) ⇒ Object
Registers event listeners on this element.
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/dyi/element.rb', line 185 def add_event_listener(event_name, listener) unless listener.respond_to?(:related_to) listener = DYI::Script::EcmaScript::EventListener.new(listener.to_s) end listener.(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_classes ⇒ Array<String>
Returns an array of CSS class names.
126 127 128 |
# File 'lib/dyi/element.rb', line 126 def css_classes css_class.to_s.split(/\s+/) end |
#event_listeners ⇒ Hash
Returns event listeners that is associated with the element.
162 163 164 |
# File 'lib/dyi/element.rb', line 162 def event_listeners @event_listeners ||= {} end |
#event_target? ⇒ Boolean
Returns whether an event is set to the element.
177 178 179 |
# File 'lib/dyi/element.rb', line 177 def event_target? !(@events.nil? || @events.empty?) end |
#remove_css_class(css_class) ⇒ String?
Remove a CSS class.
150 151 152 153 154 155 156 157 158 |
# File 'lib/dyi/element.rb', line 150 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) ⇒ Object
Removes event listeners from this element.
204 205 206 207 208 |
# File 'lib/dyi/element.rb', line 204 def remove_event_listener(event_name, listener) if event_listeners.key?(event_name) event_listeners[event_name].delete(listener) end end |
#set_event(event) ⇒ String
Sets an event to this element.
169 170 171 172 173 |
# File 'lib/dyi/element.rb', line 169 def set_event(event) @events ||= [] @events << event publish_id end |
#to_reused_source ⇒ Object
211 212 213 214 |
# File 'lib/dyi/element.rb', line 211 def to_reused_source publish_id self end |