aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/mode_edit.coffee
diff options
context:
space:
mode:
authorStephen Blott2015-01-21 11:34:56 +0000
committerStephen Blott2015-01-21 12:27:52 +0000
commit0ec38c1050b00845abaa2faa9f56d04c9d2b8992 (patch)
tree9a6c25e2178905a8c094bfbf25c428d129de33fc /content_scripts/mode_edit.coffee
parent6f73864899e1c802fd504dec1dcd1644d513d97d (diff)
downloadvimium-0ec38c1050b00845abaa2faa9f56d04c9d2b8992.tar.bz2
Edit mode: initial framework.
Diffstat (limited to 'content_scripts/mode_edit.coffee')
-rw-r--r--content_scripts/mode_edit.coffee33
1 files changed, 33 insertions, 0 deletions
diff --git a/content_scripts/mode_edit.coffee b/content_scripts/mode_edit.coffee
new file mode 100644
index 00000000..32f2e796
--- /dev/null
+++ b/content_scripts/mode_edit.coffee
@@ -0,0 +1,33 @@
+
+class EditMode extends Mode
+ @activeElements = []
+
+ constructor: (options = {}) ->
+ defaults =
+ name: "edit"
+ exitOnEscape: true
+ keydown: (event) => if @isActive() then @handleKeydown event else @continueBubbling
+ keypress: (event) => if @isActive() then @handleKeypress event else @continueBubbling
+ keyup: (event) => if @isActive() then @handleKeyup event else @continueBubbling
+
+ @element = document.activeElement
+ if @element and DomUtils.isEditable @element
+ super extend defaults, options
+
+ handleKeydown: (event) -> @suppressEvent
+ handleKeypress: (event) -> @suppressEvent
+ handleKeyup: (event) -> @suppressEvent
+
+ isActive: ->
+ document.activeElement and DomUtils.isDOMDescendant @element, document.activeElement
+
+ exit: (event, target) ->
+ super()
+ @element.blur() if target? and DomUtils.isDOMDescendant @element, target
+ EditMode.activeElements = EditMode.activeElements.filter (element) => element != @element
+
+ updateBadge: (badge) ->
+ badge.badge = "E" if @isActive()
+
+root = exports ? window
+root.EditMode = EditMode