diff options
| author | Stephen Blott | 2014-11-02 16:39:39 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2014-11-02 16:39:39 +0000 | 
| commit | 5a31148dcbd657ba13ecec714bad74ca59cac7e1 (patch) | |
| tree | e897ddee894b0711920d2ef7ecc543b8c219f974 /pages/options.coffee | |
| parent | d3a0e5b7e0d9d1cf8cf4e43e5dafde799bfe4c34 (diff) | |
| download | vimium-5a31148dcbd657ba13ecec714bad74ca59cac7e1.tar.bz2 | |
Control-ENTER in text option blurs and saves all options.
Diffstat (limited to 'pages/options.coffee')
| -rw-r--r-- | pages/options.coffee | 24 | 
1 files changed, 18 insertions, 6 deletions
diff --git a/pages/options.coffee b/pages/options.coffee index c85acd9a..ba1635d5 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -38,6 +38,18 @@ class Option      bgSettings.clear @field      @fetch() +  # Static method. +  @saveOptions: -> +    Option.all.map (option) -> option.save() +    $("saveOptions").disabled = true + +  # Used by text options. <ctrl-Enter> saves all options. +  activateCtrlEnterListener: (element) -> +    element.addEventListener "keyup", (event) -> +      if event.ctrlKey and event.keyCode == 13 +        element.blur() +        Option.saveOptions() +    # Abstract method; only implemented in sub-classes.    # Populate the option's DOM element (@element) with the setting's current value.    # populateElement: (value) -> DO_SOMETHING @@ -54,6 +66,7 @@ class TextOption extends Option    constructor: (field,enableSaveButton) ->      super(field,enableSaveButton)      @element.addEventListener "input", enableSaveButton +    @activateCtrlEnterListener @element    populateElement: (value) -> @element.value = value    readValueFromElement: -> @element.value.trim() @@ -61,6 +74,8 @@ class NonEmptyTextOption extends Option    constructor: (field,enableSaveButton) ->      super(field,enableSaveButton)      @element.addEventListener "input", enableSaveButton +    @activateCtrlEnterListener @element +    populateElement: (value) -> @element.value = value    # If the new value is not empty, then return it. Otherwise, restore the default value.    readValueFromElement: -> if value = @element.value.trim() then value else @restoreToDefault() @@ -96,7 +111,8 @@ class ExclusionRulesOption extends Option      for field in ["pattern", "passKeys"]        element = row.querySelector ".#{field}"        element.value = rule[field] -      for event in [ "keyup", "change" ] +      @activateCtrlEnterListener element +      for event in [ "input", "change" ]          element.addEventListener event, enableSaveButton      remove = row.querySelector ".exclusionRemoveButton" @@ -137,10 +153,6 @@ class ExclusionRulesOption extends Option  enableSaveButton = ->    $("saveOptions").removeAttribute "disabled" -saveOptions = -> -  Option.all.map (option) -> option.save() -  $("saveOptions").disabled = true -  # Display either "linkHintNumbers" or "linkHintCharacters", depending upon "filterLinkHints".  maintainLinkHintsView = ->    hide = (el) -> el.parentNode.parentNode.style.display = "none" @@ -188,7 +200,7 @@ document.addEventListener "DOMContentLoaded", ->      userDefinedLinkHintCss: TextOption    } -  $("saveOptions").addEventListener "click", saveOptions +  $("saveOptions").addEventListener "click", Option.saveOptions    $("advancedOptionsLink").addEventListener "click", toggleAdvancedOptions    $("showCommands").addEventListener "click", activateHelpDialog    $("filterLinkHints").addEventListener "click", maintainLinkHintsView  | 
