mirror of
https://github.com/icecoder/ICEcoder.git
synced 2026-03-02 23:03:59 +01:00
Hitting escape key outside of content area now cancels all actions
This stops parent from loading, hides the loading mask and clears server queue tasks other than one that is processing Also displays message to inform you it's cancelled tasks Function added to mediate file manager icon clicks to relevant functions Icon visibility changes depending on actions you are taking and what is available to you right now Simple function to handle icon visibility added Code folding function added to allow collapsing and expanding of code blocks (Its a bit slow & basic right now and only works for HTML, but improvements to come)
This commit is contained in:
122
lib/coder.js
122
lib/coder.js
@@ -246,11 +246,16 @@ var ICEcoder = {
|
||||
top.ICEcoder.ctrlKeyDown = false;
|
||||
return false;
|
||||
|
||||
// ESC (Comment/Uncomment line)
|
||||
// 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;
|
||||
@@ -348,6 +353,7 @@ var ICEcoder = {
|
||||
i==selectedTab ? ICEcoder.changedContent[selectedTab-1]==1 ? bgVPos = -33 : bgVPos = -22 : bgVPos = bgVPos;
|
||||
document.getElementById('tab'+i).style.backgroundPosition = "0px "+bgVPos+"px";
|
||||
}
|
||||
ICEcoder.changedContent[selectedTab-1]==1 ? top.ICEcoder.fMIconVis('fMSave',1) : top.ICEcoder.fMIconVis('fMSave',0.3);
|
||||
},
|
||||
|
||||
// Starts a new file by setting a few vars & creating a new cM instance
|
||||
@@ -520,6 +526,7 @@ var ICEcoder = {
|
||||
// hide the content area if we have no tabs open
|
||||
if (ICEcoder.openFiles.length==0) {
|
||||
top.document.getElementById('content').style.visibility = "hidden";
|
||||
top.ICEcoder.fMIconVis('fMView',0.3);
|
||||
} else {
|
||||
// Switch the mode & the tab
|
||||
ICEcoder.switchMode();
|
||||
@@ -594,7 +601,7 @@ var ICEcoder = {
|
||||
ICEcoder.selectDeselectFile('deselect',resetFile);
|
||||
}
|
||||
}
|
||||
// Set our arrray to contain 0 items
|
||||
// Set our array to contain 0 items
|
||||
top.ICEcoder.selectedFiles.length = 0;
|
||||
}
|
||||
} else {
|
||||
@@ -642,6 +649,13 @@ var ICEcoder = {
|
||||
document.findAndReplace.target[2].innerHTML = "selected files";
|
||||
document.findAndReplace.target[3].innerHTML = "selected filenames";
|
||||
}
|
||||
|
||||
// Finally, show or grey out the relevant file manager icons
|
||||
top.ICEcoder.selectedFiles.length == 1 ? top.ICEcoder.fMIconVis('fMOpen',1) : top.ICEcoder.fMIconVis('fMOpen',0.3);
|
||||
top.ICEcoder.selectedFiles.length == 1 && top.ICEcoder.thisFileFolderType == "folder" ? top.ICEcoder.fMIconVis('fMNewFile',1) : top.ICEcoder.fMIconVis('fMNewFile',0.3);
|
||||
top.ICEcoder.selectedFiles.length == 1 && top.ICEcoder.thisFileFolderType == "folder" ? top.ICEcoder.fMIconVis('fMNewFolder',1) : top.ICEcoder.fMIconVis('fMNewFolder',0.3);
|
||||
top.ICEcoder.selectedFiles.length == 1 ? top.ICEcoder.fMIconVis('fMDelete',1) : top.ICEcoder.fMIconVis('fMDelete',0.3);
|
||||
top.ICEcoder.selectedFiles.length == 1 ? top.ICEcoder.fMIconVis('fMRename',1) : top.ICEcoder.fMIconVis('fMRename',0.3);
|
||||
},
|
||||
|
||||
// Select or deselect file
|
||||
@@ -709,6 +723,7 @@ var ICEcoder = {
|
||||
} else {
|
||||
top.ICEcoder.createNewTab();
|
||||
}
|
||||
top.ICEcoder.fMIconVis('fMView',1);
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1178,5 +1193,108 @@ var ICEcoder = {
|
||||
top.document.getElementById('header').appendChild(newBlock);
|
||||
cM.addWidget(cM.getCursor(), top.document.getElementById('cssColor'), true);
|
||||
}
|
||||
},
|
||||
|
||||
// Carry out actions when clicking icons above file manager
|
||||
fMIcon: function(action) {
|
||||
|
||||
if (action=="save" && ICEcoder.openFiles.length>0) {
|
||||
top.ICEcoder.saveFile();
|
||||
}
|
||||
|
||||
if (ICEcoder.selectedFiles.length==1) {
|
||||
top.ICEcoder.rightClickedFile=top.ICEcoder.thisFileFolderLink=top.fullPath+top.ICEcoder.selectedFiles[0].replace('|','/');
|
||||
|
||||
if (action=="open" && ICEcoder.selectedFiles[0].indexOf(".")>0) {
|
||||
top.ICEcoder.thisFileFolderType='file';
|
||||
top.ICEcoder.openFile();
|
||||
}
|
||||
if (action=="newFile") {top.ICEcoder.newFile();}
|
||||
if (action=="newFolder") {top.ICEcoder.newFolder();}
|
||||
if (action=="delete") {top.ICEcoder.deleteFile(top.ICEcoder.rightClickedFile);}
|
||||
if (action=="rename") {top.ICEcoder.renameFile(top.ICEcoder.rightClickedFile);}
|
||||
}
|
||||
|
||||
if (action=="view" && ICEcoder.openFiles.length>0) {
|
||||
window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]);
|
||||
}
|
||||
},
|
||||
|
||||
// Change opacity of the file manager icons on demand
|
||||
fMIconVis: function(icon, vis) {
|
||||
if (top.document.getElementById(icon)) {
|
||||
top.document.getElementById(icon).style.opacity = vis;
|
||||
}
|
||||
},
|
||||
|
||||
// Cancel all actions on pressing Esc in non content areas
|
||||
cancelAllActions: function() {
|
||||
// Stop whatever the parent may be loading, plus clear any file manager tasks other than the current one
|
||||
window.stop();
|
||||
if (ICEcoder.serverQueueItems.length>0) {
|
||||
ICEcoder.serverQueueItems.splice(1,ICEcoder.serverQueueItems.length);
|
||||
}
|
||||
top.document.getElementById('loadingMask').style.visibility = "hidden";
|
||||
top.ICEcoder.serverMessage('<b style="color: #dd0000">Cancelled tasks</b>');
|
||||
setTimeout(function() {top.ICEcoder.serverMessage();},2000);
|
||||
},
|
||||
|
||||
// Fold or show code by clicking line nos in the gutter
|
||||
foldCode: function(instance,lineNo,mouseEvt) {
|
||||
var cM, string, origLine, origChar, collapseTag, nestDepth, cursor, lastLine;
|
||||
|
||||
cM = top.ICEcoder.getcMInstance();
|
||||
|
||||
setTimeout(function() {
|
||||
// If the next line is hidden, unhide lines until we reach a line that isn't hidden
|
||||
if (cM.lineInfo(lineNo+1).handle.hidden) {
|
||||
for (var i=lineNo;i<=1000000;i++) {
|
||||
cM.lineInfo(i+1).handle.hidden ? cM.showLine(i+1) : i=1000000;
|
||||
if (!cM.lineInfo(i+1).handle.hidden) {
|
||||
cM.clearMarker(i);
|
||||
}
|
||||
}
|
||||
// Clear the gutter marker
|
||||
cM.clearMarker(lineNo);
|
||||
} else {
|
||||
// Get the line of text, plus set our original (current) line & char position
|
||||
string = cM.getLine(lineNo);
|
||||
origLine = cM.getCursor().line;
|
||||
origChar = cM.getCursor().ch;
|
||||
|
||||
// Then shoft the cursor to just after the first > char
|
||||
cM.setCursor(lineNo,string.indexOf(">")+1);
|
||||
|
||||
setTimeout(function() {
|
||||
// Get the tag we're collapsing on and it's nest depth
|
||||
collapseTag = top.ICEcoder.htmlTagArray[top.ICEcoder.htmlTagArray.length-1];
|
||||
nestDepth = top.ICEcoder.htmlTagArray.length;
|
||||
|
||||
setTimeout(function() {
|
||||
// If we don't have the end tag on the same line
|
||||
if (string.indexOf("</"+collapseTag+">",string.indexOf("<"+collapseTag+">"))==-1) {
|
||||
// Find each matching end tag in turn and if it's the same nest depth, we have the correct one
|
||||
cursor = cM.getSearchCursor("</"+collapseTag+">",cM.getCursor());
|
||||
for (var i=0;i<=1000000;i++) {
|
||||
lastLine = cursor.findNext();
|
||||
lastLine = cursor.to().line;
|
||||
cM.setCursor(cursor.to().line,cursor.to().ch);
|
||||
if (top.ICEcoder.htmlTagArray.length==nestDepth-1) {
|
||||
i=1000000;
|
||||
}
|
||||
}
|
||||
// Now we can hide lines in that range
|
||||
for (i=lineNo+1;i<lastLine;i++) {
|
||||
cM.hideLine(i);
|
||||
}
|
||||
}
|
||||
// Finally, set the marker in the gutter and return our cursor to the original position
|
||||
cM.setMarker(lineNo, "<span style=\"color: #ffffff; cursor: pointer\">+</span> %N%")
|
||||
cM.setCursor(origLine,origChar);
|
||||
},1);
|
||||
|
||||
},1);
|
||||
};
|
||||
},1);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user