diff --git a/lib/ice-coder.js b/lib/ice-coder.js index 3894db1..86dea4e 100644 --- a/lib/ice-coder.js +++ b/lib/ice-coder.js @@ -11,6 +11,7 @@ var ICEcoder = { selectedTab: 0, // The tab that's currently selected changedContent: [], // Binary array to indicate which tabs have changed ctrlKeyDown: false, // Indicates if CTRL keydown + altKeyDown: false, // Indicates if Alt keydown shiftKeyDown: false, // Indicates if Shift keydown delKeyDown: false, // Indicates if DEL keydown canSwitchTabs: true, // Stops switching of tabs when trying to close @@ -347,6 +348,18 @@ var ICEcoder = { top.ICEcoder.dontSelect = true; }, + // Wrap our selected text/cursor with tags + tagWrapper: function(tag) { + var cM, tagStart, tagEnd; + + cM = ICEcoder.getcMInstance(); + tagStart = tag; + tagEnd = tag; + if (tag=='a') {tagStart='a href=""';} + cM.replaceSelection("<"+tagStart+">"+cM.getSelection()+""); + if (tag=='a') {cM.setCursor({line:cM.getCursor().line,ch:cM.getCursor('start').ch+9})} + }, + // ============== // FILES // ============== @@ -1882,102 +1895,122 @@ var ICEcoder = { top.ICEcoder.ctrlKeyDown = true; return false; + // Alt key down + } else if(key==18) { + top.ICEcoder.altKeyDown = true; + return false; + // Shift key down } else if(key==16) { top.ICEcoder.shiftKeyDown = true; return false; + }; - // CTRL+F (Find) - } else if(key==70 && top.ICEcoder.ctrlKeyDown==true) { - top.document.getElementById('find').focus(); - top.ICEcoder.ctrlKeyDown = false; - return false; + // Alt key down? + if (top.ICEcoder.altKeyDown==true) { - // CTRL+G (Go to line) - } else if(key==71 && top.ICEcoder.ctrlKeyDown==true) { - top.document.getElementById('goToLineNo').focus(); - top.ICEcoder.ctrlKeyDown = false; - return false; + // + CTRL + key (tag wrapper) + if (ICEcoder.ctrlKeyDown==true && area == "content") { + if (key==68) {top.ICEcoder.tagWrapper('div'); return false;} + else if (key==83) {top.ICEcoder.tagWrapper('span'); return false;} + else if (key==80) {top.ICEcoder.tagWrapper('p'); return false;} + else if (key==65) {top.ICEcoder.tagWrapper('a'); return false;} + else if (key==66) {top.ICEcoder.tagWrapper('b'); return false;} + else if (key==73) {top.ICEcoder.tagWrapper('i'); return false;} + else if (key==71) {top.ICEcoder.tagWrapper('strong'); return false;} + else if (key==69) {top.ICEcoder.tagWrapper('em'); return false;} + else {return key;} + } else {return key;} - // CTRL+I (Get info) - } else if(key==73 && top.ICEcoder.ctrlKeyDown==true && area == "content") { - var searchPrefix = ""; - if (top.ICEcoder.caretLocType!="Content") { - searchPrefix = top.ICEcoder.caretLocType.toLowerCase()+" "; - } - window.open("http://www.google.com/#output=search&q="+searchPrefix+top.ICEcoder.getcMInstance().getSelection()); - top.ICEcoder.ctrlKeyDown = false; - return false; - - // CTRL+right arrow (Next tab) - } else if(key==39 && top.ICEcoder.ctrlKeyDown==true && area!="content") { - top.ICEcoder.nextTab(); - return false; - - // CTRL+left arrow (Previous tab) - } else if(key==37 && top.ICEcoder.ctrlKeyDown==true && area!="content") { - top.ICEcoder.previousTab(); - return false; - - // CTRL+up arrow (Move line up) - } else if(key==38 && top.ICEcoder.ctrlKeyDown==true && area=="content") { - top.ICEcoder.moveLine('up'); - return false; - - // CTRL+down arrow (Move line down) - } else if(key==40 && top.ICEcoder.ctrlKeyDown==true && area=="content") { - top.ICEcoder.moveLine('down'); - return false; - - // CTRL+numeric plus (New tab) - } else if(key==107 && top.ICEcoder.ctrlKeyDown==true) { - top.ICEcoder.newTab(); - return false; - - // CTRL+numeric minus (Close tab) - } else if(key==109 && top.ICEcoder.ctrlKeyDown==true) { - top.ICEcoder.closeTab(top.ICEcoder.selectedTab); - return false; - - // CTRL+S (Save), CTRL+Shift+S (Save As) - } else if(key==83 && top.ICEcoder.ctrlKeyDown==true) { - if(top.ICEcoder.shiftKeyDown==true) { - top.ICEcoder.saveFile('saveAs'); - top.ICEcoder.shiftKeyDown = false; - } else { - top.ICEcoder.saveFile(); - } - top.ICEcoder.stickyTabMaybe = true; - return false; - - // CTRL+Enter (Open Webpage) - } else if(key==13 && top.ICEcoder.ctrlKeyDown==true && top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1] != "/[NEW]") { - if (top.ICEcoder.stickyTabMaybe) { - top.ICEcoder.stickyTab = window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1],"stickyTab"); - } else { - window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]); - } - top.ICEcoder.ctrlKeyDown = false; - return false; - - // CTRL+Space (Show snippet) - } else if(key==32 && top.ICEcoder.ctrlKeyDown==true && area=="content") { - top.ICEcoder.addSnippet(); - return false; - - // ESC in content area (Comment/Uncomment line) - } else if(key==27 && area == "content") { - top.ICEcoder.lineCommentToggle(); - return false; - - // ESC not in content area (Cancel all actions) - } else if(key==27 && area != "content") { - top.ICEcoder.cancelAllActions(); - return false; - - // Any other key } else { - return key; + + // CTRL+F (Find) + if(key==70 && top.ICEcoder.ctrlKeyDown==true) { + top.document.getElementById('find').focus(); + top.ICEcoder.ctrlKeyDown = false; + return false; + + // CTRL+G (Go to line) + } else if(key==71 && top.ICEcoder.ctrlKeyDown==true) { + top.document.getElementById('goToLineNo').focus(); + top.ICEcoder.ctrlKeyDown = false; + return false; + + // CTRL+I (Get info) + } else if(key==73 && top.ICEcoder.ctrlKeyDown==true && area == "content") { + var searchPrefix = ""; + if (top.ICEcoder.caretLocType!="Content") { + searchPrefix = top.ICEcoder.caretLocType.toLowerCase()+" "; + } + window.open("http://www.google.com/#output=search&q="+searchPrefix+top.ICEcoder.getcMInstance().getSelection()); + top.ICEcoder.ctrlKeyDown = false; + return false; + + // CTRL+right arrow (Next tab) + } else if(key==39 && top.ICEcoder.ctrlKeyDown==true && area!="content") { + top.ICEcoder.nextTab(); + return false; + + // CTRL+left arrow (Previous tab) + } else if(key==37 && top.ICEcoder.ctrlKeyDown==true && area!="content") { + top.ICEcoder.previousTab(); + return false; + + // CTRL+up arrow (Move line up) + } else if(key==38 && top.ICEcoder.ctrlKeyDown==true && area=="content") { + top.ICEcoder.moveLine('up'); + return false; + + // CTRL+down arrow (Move line down) + } else if(key==40 && top.ICEcoder.ctrlKeyDown==true && area=="content") { + top.ICEcoder.moveLine('down'); + return false; + + // CTRL+numeric plus (New tab) + } else if(key==107 && top.ICEcoder.ctrlKeyDown==true) { + top.ICEcoder.newTab(); + return false; + + // CTRL+numeric minus (Close tab) + } else if(key==109 && top.ICEcoder.ctrlKeyDown==true) { + top.ICEcoder.closeTab(top.ICEcoder.selectedTab); + return false; + + // CTRL+S (Save), CTRL+Shift+S (Save As) + } else if(key==83 && top.ICEcoder.ctrlKeyDown==true) { + if(top.ICEcoder.shiftKeyDown==true) { + top.ICEcoder.saveFile('saveAs'); + top.ICEcoder.shiftKeyDown = false; + } else { + top.ICEcoder.saveFile(); + } + top.ICEcoder.stickyTabMaybe = true; + return false; + + // CTRL+Enter (Open Webpage) + } else if(key==13 && top.ICEcoder.ctrlKeyDown==true && top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1] != "/[NEW]") { + if (top.ICEcoder.stickyTabMaybe) { + top.ICEcoder.stickyTab = window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1],"stickyTab"); + } else { + window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]); + } + top.ICEcoder.ctrlKeyDown = false; + return false; + + // CTRL+Space (Show snippet) + } else if(key==32 && top.ICEcoder.ctrlKeyDown==true && area=="content") { + top.ICEcoder.addSnippet(); + return false; + + // ESC in content area (Comment/Uncomment line) + } else if(key==27 && area == "content") { + top.ICEcoder.lineCommentToggle(); + return false; + + // Any other key + } else { + return key; + } } }, @@ -1989,6 +2022,7 @@ var ICEcoder = { if (key==17) {top.ICEcoder.ctrlKeyDown = false; top.ICEcoder.stickyTabMaybe = false} else if (key==16) {top.ICEcoder.shiftKeyDown = false} + else if (key==18) {top.ICEcoder.altKeyDown = false} else if (key==46) {top.ICEcoder.delKeyDown = false} },