Class: DYI::GraphicalElement Abstract

Inherits:
Element
  • Object
show all
Defined in:
lib/dyi/element.rb

Overview

This class is abstract.

Abstract class that represents a graphic element.

Since:

  • 1.0.0

Direct Known Subclasses

Canvas, Shape::Base

Constant Summary collapse

CLASS_REGEXP =

Since:

  • 1.0.0

/\A[A-Z_a-z][\-0-9A-Z_a-z]*\z/

Constants inherited from Element

Element::ID_REGEXP

Instance Attribute Summary collapse

Attributes inherited from Element

#description, #title

Instance Method Summary collapse

Methods inherited from Element

#canvas, #child_elements, #has_uri_reference?, #id, #id=, #include_external_file?, #inner_id

Instance Attribute Details

#css_classString

Returns a CSS class attribute of the element.

Returns:

  • (String)

    a class name or set of class names. If the elements has multiple class names, class names are separated by white space

Since:

  • 1.0.0



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.

Parameters:

  • css_class (String)

    a CSS class name

Returns:

  • (String, nil)

    value of parameter ‘css_class’ if successes to add a class, nil if failures

Raises:

  • (ArgumentError)

    parameter ‘css_class’ is illegal class name

Since:

  • 1.0.0



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.

Parameters:

  • event_name (Symbol)

    an event name for which the user is registering

  • listener (Script::EcmaScript::EventListener, #to_s)

    an event listener which contains the methods to be called when the event occurs.

Since:

  • 1.0.0



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.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_classesArray<String>

Returns an array of CSS class names.

Returns:

  • (Array<String>)

    an array of CSS class names

Since:

  • 1.0.0



126
127
128
# File 'lib/dyi/element.rb', line 126

def css_classes
  css_class.to_s.split(/\s+/)
end

#event_listenersHash

Returns event listeners that is associated with the element.

Returns:

  • (Hash)

    hash of event listeners

Since:

  • 1.0.0



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.

Returns:

  • (Boolean)

    true if an event is set to the element, false otherwise

Since:

  • 1.0.0



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.

Parameters:

  • css_class (String)

    a CSS class name that will be removed

Returns:

  • (String, nil)

    value of parameter ‘css_class’ if successes to remove a class, nil if failures

Since:

  • 1.0.0



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.

Parameters:

  • event_name (Symbol)

    an event name for which the user is registering

  • listener (Script::SimpleScript)

    an event listener to be removed

Since:

  • 1.0.0



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.

Parameters:

  • event (Event)

    an event that is set to the element

Returns:

  • (String)

    id for this element

Since:

  • 1.0.0



169
170
171
172
173
# File 'lib/dyi/element.rb', line 169

def set_event(event)
  @events ||= []
  @events << event
  publish_id
end

#to_reused_sourceObject

Since:

  • 1.3.0



211
212
213
214
# File 'lib/dyi/element.rb', line 211

def to_reused_source
  publish_id
  self
end