aboutsummaryrefslogtreecommitdiffstats
path: root/pages/options.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'pages/options.coffee')
-rw-r--r--pages/options.coffee126
1 files changed, 62 insertions, 64 deletions
diff --git a/pages/options.coffee b/pages/options.coffee
index 776432d2..956c3e4e 100644
--- a/pages/options.coffee
+++ b/pages/options.coffee
@@ -42,10 +42,6 @@ class Option
# Static method.
@saveOptions: ->
Option.all.map (option) -> option.save()
- # These are only relevant on the options page; catch the exception on the popup page.
- try
- $("saveOptions").disabled = true
- $("saveOptions").innerHTML = "No Changes"
# Abstract method; only implemented in sub-classes.
# Populate the option's DOM element (@element) with the setting's current value.
@@ -137,43 +133,63 @@ class ExclusionRulesOption extends Option
flatten = (rule) -> if rule and rule.pattern then rule.pattern + "\n" + rule.passKeys else ""
a.map(flatten).join("\n") == b.map(flatten).join("\n")
-#
-# Operations for page elements.
-enableSaveButton = ->
- $("saveOptions").removeAttribute "disabled"
- $("saveOptions").innerHTML = "Save Changes"
-
-# Display either "linkHintNumbers" or "linkHintCharacters", depending upon "filterLinkHints".
-maintainLinkHintsView = ->
- hide = (el) -> el.parentNode.parentNode.style.display = "none"
- show = (el) -> el.parentNode.parentNode.style.display = "table-row"
- if $("filterLinkHints").checked
- hide $("linkHintCharacters")
- show $("linkHintNumbers")
- else
- show $("linkHintCharacters")
- hide $("linkHintNumbers")
-
-toggleAdvancedOptions =
- do (advancedMode=false) ->
- (event) ->
- if advancedMode
- $("advancedOptions").style.display = "none"
- $("advancedOptionsLink").innerHTML = "Show advanced options…"
- else
- $("advancedOptions").style.display = "table-row-group"
- $("advancedOptionsLink").innerHTML = "Hide advanced options"
- advancedMode = !advancedMode
- event.preventDefault()
- # Prevent the "advanced options" link from retaining the focus.
- document.activeElement.blur()
-
-activateHelpDialog = ->
- showHelpDialog chrome.extension.getBackgroundPage().helpDialogHtml(true, true, "Command Listing"), frameId
- # Prevent the "show help" link from retaining the focus.
- document.activeElement.blur()
-
-initOptions = ->
+initOptionsPage = ->
+ enableSaveButton = ->
+ $("saveOptions").removeAttribute "disabled"
+ $("saveOptions").innerHTML = "Save Changes"
+
+ # Display either "linkHintNumbers" or "linkHintCharacters", depending upon "filterLinkHints".
+ maintainLinkHintsView = ->
+ hide = (el) -> el.parentNode.parentNode.style.display = "none"
+ show = (el) -> el.parentNode.parentNode.style.display = "table-row"
+ if $("filterLinkHints").checked
+ hide $("linkHintCharacters")
+ show $("linkHintNumbers")
+ else
+ show $("linkHintCharacters")
+ hide $("linkHintNumbers")
+
+ toggleAdvancedOptions =
+ do (advancedMode=false) ->
+ (event) ->
+ if advancedMode
+ $("advancedOptions").style.display = "none"
+ $("advancedOptionsLink").innerHTML = "Show advanced options…"
+ else
+ $("advancedOptions").style.display = "table-row-group"
+ $("advancedOptionsLink").innerHTML = "Hide advanced options"
+ advancedMode = !advancedMode
+ event.preventDefault()
+ # Prevent the "advanced options" link from retaining the focus.
+ document.activeElement.blur()
+
+ activateHelpDialog = ->
+ showHelpDialog chrome.extension.getBackgroundPage().helpDialogHtml(true, true, "Command Listing"), frameId
+ # Prevent the "show help" link from retaining the focus when clicked.
+ document.activeElement.blur()
+
+ saveOptions = ->
+ Option.saveOptions()
+ $("saveOptions").disabled = true
+ $("saveOptions").innerHTML = "No Changes"
+
+ $("saveOptions").addEventListener "click", saveOptions
+ $("advancedOptionsLink").addEventListener "click", toggleAdvancedOptions
+ $("showCommands").addEventListener "click", activateHelpDialog
+ $("filterLinkHints").addEventListener "click", maintainLinkHintsView
+
+ for element in document.getElementsByClassName "nonEmptyTextOption"
+ element.className = element.className + " example info"
+ element.innerHTML = "Leave empty to reset this option."
+
+ maintainLinkHintsView()
+ window.onbeforeunload = -> "You have unsaved changes to options." unless $("saveOptions").disabled
+
+ document.addEventListener "keyup", (event) ->
+ if event.ctrlKey and event.keyCode == 13
+ document.activeElement.blur() if document?.activeElement?.blur
+ saveOptions()
+
options =
exclusionRules: ExclusionRulesOption
filterLinkHints: CheckBoxOption
@@ -195,31 +211,13 @@ initOptions = ->
for name, type of options
new type(name,enableSaveButton)
- $("saveOptions").addEventListener "click", Option.saveOptions
- $("advancedOptionsLink").addEventListener "click", toggleAdvancedOptions
- $("showCommands").addEventListener "click", activateHelpDialog
- $("filterLinkHints").addEventListener "click", maintainLinkHintsView
-
- for element in document.getElementsByClassName "nonEmptyTextOption"
- element.className = element.className + " example info"
- element.innerHTML = "Leave empty to reset this option."
-
- maintainLinkHintsView()
- window.onbeforeunload = -> "You have unsaved changes to options." unless $("saveOptions").disabled
-
- document.addEventListener "keyup", (event) ->
- if event.ctrlKey and event.keyCode == 13
- document.activeElement.blur() if document?.activeElement?.blur
- Option.saveOptions()
-
-initPopup = ->
+initPopupPage = ->
chrome.tabs.getSelected null, (tab) ->
document.getElementById("optionsLink").setAttribute "href", chrome.runtime.getURL("pages/options.html")
- updated = false
onUpdated = ->
- $("helpText").innerHTML = "Type <strong>Ctrl-Enter</strong> to save and close; <strong>Esc</strong> to cancel."
- updated = true
+ $("helpText").innerHTML =
+ "Type <strong>Ctrl-Enter</strong> to save and close; <strong>Esc</strong> to cancel."
document.addEventListener "keyup", (event) ->
if event.ctrlKey and event.keyCode == 13
@@ -232,6 +230,6 @@ initPopup = ->
# Initialization.
document.addEventListener "DOMContentLoaded", ->
switch location.pathname
- when "/pages/options.html" then initOptions()
- when "/pages/popup.html" then initPopup()
+ when "/pages/options.html" then initOptionsPage()
+ when "/pages/popup.html" then initPopupPage()