Added own clipboard class.

This commit is contained in:
Martin Edenhofer 2012-10-22 15:08:09 +02:00
parent 898ee67a88
commit 919b38a6d8

View file

@ -0,0 +1,164 @@
class App.ClipBoard
_instance = undefined
@bind: (el) ->
if _instance == undefined
_instance ?= new _Singleton
_instance.bind(el)
@getSelected: ->
if _instance == undefined
_instance ?= new _Singleton
_instance.getSelected()
@getSelectedLast: ->
if _instance == undefined
_instance ?= new _Singleton
_instance.getSelectedLast()
@keycode: (code) ->
if _instance == undefined
_instance ?= new _Singleton
_instance.keycode(code)
class _Singleton
constructor: ->
@selection = ''
@selectionLast = ''
# bind to fill selected text into
bind: (el) ->
$(el).bind('mouseup', =>
@selection = @_getSelected()
if @selection
@selectionLast = @selection
)
# get cross browser selected string
_getSelected: ->
text = '';
if window.getSelection
text = window.getSelection()
else if document.getSelection
text = document.getSelection()
else if document.selection
text = document.selection.createRange().text
if text
text = text.toString().trim()
text
# get current selection
getSelected: ->
@selection
# get latest selection
getSelectedLast: ->
@selectionLast
keycode: (code) ->
for key, value of @keycodesTable()
if value.toString() is code.toString()
return key
keycodesTable: ->
  map = {
  'backspace' : 8,
  'tab' : 9,
  'enter' : 13,
  'shift' : 16,
  'ctrl' : 17,
  'alt' : 18,
  'pause_break' : '19',
  'caps_lock' : '20',
  'escape' : '27',
  'page_up' : '33',
  'page down' : '34',
  'end' : '35',
  'home' : '36',
  'left_arrow' : '37',
  'up_arrow' : '38',
  'right_arrow' : '39',
  'down_arrow' : '40',
  'insert' : '45',
  'delete' : '46',
  '0' : '48',
  '1' : '49',
  '2' : '50',
  '3' : '51',
  '4' : '52',
  '5' : '53',
  '6' : '54',
  '7' : '55',
  '8' : '56',
  '9' : '57',
  'a' : '65',
  'b' : '66',
  'c' : '67',
  'd' : '68',
  'e' : '69',
  'f' : '70',
  'g' : '71',
  'h' : '72',
  'i' : '73',
  'j' : '74',
  'k' : '75',
  'l' : '76',
  'm' : '77',
  'n' : '78',
  'o' : '79',
  'p' : '80',
  'q' : '81',
  'r' : '82',
  's' : '83',
  't' : '84',
  'u' : '85',
  'v' : '86',
  'w' : '87',
  'x' : '88',
  'y' : '89',
  'z' : '90',
  'left_window key' : '91',
  'right_window key' : '92',
  'select_key' : '93',
  'numpad 0' : '96',
  'numpad 1' : '97',
  'numpad 2' : '98',
  'numpad 3' : '99',
  'numpad 4' : '100',
  'numpad 5' : '101',
  'numpad 6' : '102',
  'numpad 7' : '103',
  'numpad 8' : '104',
  'numpad 9' : '105',
  'multiply' : '106',
  'add' : '107',
  'subtract' : '109',
  'decimal point' : '110',
  'divide' : '111',
  'f1' : '112',
  'f2' : '113',
  'f3' : '114',
  'f4' : '115',
  'f5' : '116',
  'f6' : '117',
  'f7' : '118',
  'f8' : '119',
  'f9' : '120',
  'f10' : '121',
  'f11' : '122',
  'f12' : '123',
  'num_lock' : '144',
  'scroll_lock' : '145',
  'semi_colon' : '186',
  'equal_sign' : '187',
  'comma' : '188',
  'dash' : '189',
  'period' : '190',
  'forward_slash' : '191',
  'grave_accent' : '192',
  'open_bracket' : '219',
  'backslash' : '220',
  'closebracket' : '221',
  'single_quote' : '222'
}
map