mirror of
https://github.com/atom/atom.git
synced 2026-02-06 20:55:33 -05:00
60 lines
1.9 KiB
CoffeeScript
60 lines
1.9 KiB
CoffeeScript
idCounter = 0
|
|
nextId = -> idCounter++
|
|
|
|
# Essential: Represents a decoration that applies to every marker on a given
|
|
# layer. Created via {TextEditor::decorateMarkerLayer}.
|
|
module.exports =
|
|
class LayerDecoration
|
|
constructor: (@markerLayer, @decorationManager, @properties) ->
|
|
@id = nextId()
|
|
@destroyed = false
|
|
@markerLayerDestroyedDisposable = @markerLayer.onDidDestroy => @destroy()
|
|
@overridePropertiesByMarkerId = {}
|
|
|
|
# Essential: Destroys the decoration.
|
|
destroy: ->
|
|
return if @destroyed
|
|
@markerLayerDestroyedDisposable.dispose()
|
|
@markerLayerDestroyedDisposable = null
|
|
@destroyed = true
|
|
@decorationManager.didDestroyLayerDecoration(this)
|
|
|
|
# Essential: Determine whether this decoration is destroyed.
|
|
#
|
|
# Returns a {Boolean}.
|
|
isDestroyed: -> @destroyed
|
|
|
|
getId: -> @id
|
|
|
|
getMarkerLayer: -> @markerLayer
|
|
|
|
# Essential: Get this decoration's properties.
|
|
#
|
|
# Returns an {Object}.
|
|
getProperties: ->
|
|
@properties
|
|
|
|
# Essential: Set this decoration's properties.
|
|
#
|
|
# * `newProperties` See {TextEditor::decorateMarker} for more information on
|
|
# the properties. The `type` of `gutter` and `overlay` are not supported on
|
|
# layer decorations.
|
|
setProperties: (newProperties) ->
|
|
return if @destroyed
|
|
@properties = newProperties
|
|
@decorationManager.scheduleUpdateDecorationsEvent()
|
|
|
|
# Essential: Override the decoration properties for a specific marker.
|
|
#
|
|
# * `marker` The {DisplayMarker} or {Marker} for which to override
|
|
# properties.
|
|
# * `properties` An {Object} containing properties to apply to this marker.
|
|
# Pass `null` to clear the override.
|
|
setPropertiesForMarker: (marker, properties) ->
|
|
return if @destroyed
|
|
if properties?
|
|
@overridePropertiesByMarkerId[marker.id] = properties
|
|
else
|
|
delete @overridePropertiesByMarkerId[marker.id]
|
|
@decorationManager.scheduleUpdateDecorationsEvent()
|