Skip to content

Commit

Permalink
Merge branch 'master' into ace_update
Browse files Browse the repository at this point in the history
  • Loading branch information
fjakobs committed Dec 20, 2011
2 parents 5225ece + c888577 commit 5caca05
Show file tree
Hide file tree
Showing 14 changed files with 803 additions and 134 deletions.
402 changes: 339 additions & 63 deletions client/ext/jslanguage/scope_analyzer.js

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions client/ext/keybindings_default/default_mac.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ return keys.onLoad({
"nexttab": "Command-Tab|Option-Tab",
"previoustab": "Command-Shift-Tab|Option-Shift-Tab"
},
"tabsessions" : {
"savetabsession": "Command-Alt-S",
},
"splitview" : {
"mergetableft": "Command-Option-[",
"mergetabright": "Command-Option-]"
Expand Down
3 changes: 3 additions & 0 deletions client/ext/keybindings_default/default_win.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ return keys.onLoad({
"nexttab": "Ctrl-Tab",
"previoustab": "Ctrl-Shift-Tab"
},
"tabsessions" : {
"savetabsession": "Ctrl-Alt-S",
},
"splitview" : {
"mergetableft": "Ctrl-Alt-[",
"mergetabright": "Ctrl-Alt-]"
Expand Down
11 changes: 10 additions & 1 deletion client/ext/language/language.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ module.exports = ext.register("ext/language/language", {
this.setJSHint();
this.setInstanceHighlight();
this.setUnusedFunctionArgs();
this.setUndeclaredVars();

this.editor.on("changeSession", function(event) {
// Time out a litle, to let the page path be updated
Expand Down Expand Up @@ -148,14 +149,22 @@ module.exports = ext.register("ext/language/language", {
this.worker.emit("cursormove", {data: cursorPos});
},

setUnusedFunctionArgs: function(yeah) {
setUnusedFunctionArgs: function() {
if(extSettings.model.queryValue("language/@unusedFunctionArgs") != "false")
this.worker.call("enableFeature", ["unusedFunctionArgs"]);
else
this.worker.call("disableFeature", ["unusedFunctionArgs"]);
this.setPath();
},

setUndeclaredVars: function() {
if(extSettings.model.queryValue("language/@undeclaredVars") != "false")
this.worker.call("enableFeature", ["undeclaredVars"]);
else
this.worker.call("disableFeature", ["undeclaredVars"]);
this.setPath();
},

/**
* Method attached to key combo for complete
*/
Expand Down
24 changes: 18 additions & 6 deletions client/ext/language/liveinspect.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,21 @@ module.exports = (function () {
// get respective HTML elements
windowHtml = winLiveInspect.$ext;
datagridHtml = dgLiveInspect.$ext;
winLiveInspect.addEventListener("prop.visible", function(e) {
// don't track when hiding the window
if (!e.value)
return;
ide.dispatchEvent("track_action", {
type: "live inspect code",
expression: currentExpression || "no expression available yet."
});
});
};

var hook = function(_ext, worker) {
if (typeof stRunning === "undefined")
return;

ext.initExtension(this);

// listen to the worker's response
Expand Down Expand Up @@ -55,17 +67,17 @@ module.exports = (function () {
stDebugProcessRunning.addEventListener("prop.active", checkDebuggerActive);

// when hovering over the inspector window we should ignore all further listeners
datagridHtml.addEventListener("mouseover", function () {
apf.addListener(datagridHtml, "mouseover", function() {
if (activeTimeout) {
clearTimeout(activeTimeout);
}
});

// we should track mouse movement over the whole window
document.addEventListener("mousemove", onDocumentMouseMove)
apf.addListener(document, "mousemove", onDocumentMouseMove);

// yes, this is superhacky but the editor function in APF is crazy
datagridHtml.addEventListener("dblclick", initializeEditor);
// yes, this is superhacky but the editor function in APF is crazy
apf.addListener(datagridHtml, "dblclick", initializeEditor);

// when collapsing or expanding the datagrid we want to resize
dgLiveInspect.addEventListener("expand", resizeWindow);
Expand Down Expand Up @@ -171,10 +183,10 @@ module.exports = (function () {
};

// when blurring, update
edit.addEventListener("blur", onBlur);
apf.addListener(edit, "blur", onBlur);

// on keydown, same same
edit.addEventListener("keydown", function (ev) {
apf.addListener(edit, "keydown", function(ev) {
if (ev.keyCode === 27 || ev.keyCode === 13) { // tab or enter
return onBlur.call(this);
}
Expand Down
3 changes: 3 additions & 0 deletions client/ext/language/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
<a:checkbox class="underlined" label="Variable instance highlighting"
checked="{[language/@instanceHighlight] != '' ? [language/@instanceHighlight] : 'true'}"
value="[language/@instanceHighlight]" onclick="require('ext/language/language').setInstanceHighlight()"/>
<a:checkbox class="underlined" label="Mark undeclared variables"
checked="{[language/@undeclaredVars] != '' ? [language/@undeclaredVars] : 'true'}"
value="[language/@undeclaredVars]" onclick="require('ext/language/language').setUndeclaredVars()"/>
<a:checkbox class="underlined" label="Mark unused function arguments"
checked="{[language/@unusedFunctionArgs] != '' ? [language/@unusedFunctionArgs] : 'true'}"
value="[language/@unusedFunctionArgs]" onclick="require('ext/language/language').setUnusedFunctionArgs()"/>
Expand Down
2 changes: 1 addition & 1 deletion client/ext/openfiles/openfiles.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ module.exports = ext.register("ext/openfiles/openfiles", {

tabEditors.addEventListener("afterswitch", function(e){
var page = e.nextPage;
if (page) {
if (page && page.$model.data) {
var node = _self.model.queryNode("//node()[@path='" + page.$model.data.getAttribute("path") + "']");
if (node)
lstOpenFiles.select(node);
Expand Down
24 changes: 19 additions & 5 deletions client/ext/save/save.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ module.exports = ext.register("ext/save/save", {
var at = e.page.$at;
if (!at.undo_ptr)
at.undo_ptr = at.$undostack[0];
if (at.undo_ptr && at.$undostack[at.$undostack.length-1] !== at.undo_ptr
|| !at.undo_ptr && e.page.$doc.getNode().getAttribute("changed") == 1
var node = e.page.$doc.getNode();
if (node && at.undo_ptr && at.$undostack[at.$undostack.length-1] !== at.undo_ptr
|| !at.undo_ptr && node.getAttribute("changed") == 1
&& e.page.$doc.getValue()) {
ext.initExtension(_self);

Expand All @@ -54,10 +55,16 @@ module.exports = ext.register("ext/save/save", {
winCloseConfirm.addEventListener("hide", function(){
if (winCloseConfirm.all != -100) {
var f = function(resetUndo){
tabEditors.remove(winCloseConfirm.page, true);
var page;
if (!(page=winCloseConfirm.page))
return;

tabEditors.remove(page, true, page.noAnim);
delete page.noAnim;
if (resetUndo)
winCloseConfirm.page.$at.undo(-1);
page.$at.undo(-1);
delete winCloseConfirm.page;
page.dispatchEvent("aftersavedialogclosed");
};

if (winCloseConfirm.all == -200)
Expand All @@ -66,6 +73,9 @@ module.exports = ext.register("ext/save/save", {
f(true);
/*winSaveAs.page = winCloseConfirm.page;*/
}
else
tabEditors.dispatchEvent("aftersavedialogcancel");

winCloseConfirm.removeEventListener("hide", arguments.callee);
});

Expand Down Expand Up @@ -273,7 +283,11 @@ module.exports = ext.register("ext/save/save", {

panel.setAttribute("caption", "Saved file " + path);
ide.dispatchEvent("afterfilesave", {node: node, doc: doc, value: value});
ide.dispatchEvent("track_action", {type: "save as filetype", fileType: node.getAttribute("name").split(".").pop()});
ide.dispatchEvent("track_action", {
type: "save as filetype",
fileType: node.getAttribute("name").split(".").pop(),
success: state != apf.SUCCESS ? "false" : "true"
});

apf.xmldb.removeAttribute(node, "saving");
apf.xmldb.removeAttribute(node, "new");
Expand Down
7 changes: 6 additions & 1 deletion client/ext/settings/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,16 @@ module.exports = ext.register("ext/settings/settings", {
},

saveToFile : function() {
var data = this.model.data && apf.xmldb.cleanXml(this.model.data.xml) || "";
ide.send(JSON.stringify({
command: "settings",
action: "set",
settings: this.model.data && apf.xmldb.cleanXml(this.model.data.xml) || ""
settings: data
}));
ide.dispatchEvent("track_action", {
type: "save settings",
settings: data
});
},

saveSettingsPanel: function() {
Expand Down
132 changes: 76 additions & 56 deletions client/ext/tabbehaviors/tabbehaviors.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ module.exports = ext.register("ext/tabbehaviors/tabbehaviors", {
$tabAccessCycle : 2,
sep : null,
more : null,
menuOffset : 5,
menuOffset : 3,
commands : {
"closetab": {hint: "close the tab that is currently active", msg: "Closing active tab."},
"closealltabs": {hint: "close all opened tabs", msg: "Closing all tabs."},
Expand Down Expand Up @@ -52,18 +52,6 @@ module.exports = ext.register("ext/tabbehaviors/tabbehaviors", {
var _self = this;

this.nodes.push(
mnuTabs.appendChild(new apf.item({
caption : "Reveal in File Tree",
onclick : function() {
_self.revealtab();
}
})),
mnuTabs.appendChild(new apf.item({
caption : "Close Tab",
onclick : function() {
_self.closetab();
}
})),
mnuTabs.appendChild(new apf.item({
caption : "Close All Tabs",
onclick : this.closealltabs.bind(this)
Expand Down Expand Up @@ -103,15 +91,15 @@ module.exports = ext.register("ext/tabbehaviors/tabbehaviors", {
]
}))
);
this.hotitems.revealtab = [this.nodes[0]];
this.hotitems.closetab = [this.nodes[1]];
this.hotitems.closealltabs = [this.nodes[2]];
this.hotitems.closeallbutme = [this.nodes[3]];

this.hotitems.revealtab = [mnuContextTabs.childNodes[0]];
this.hotitems.closetab = [mnuContextTabs.childNodes[1]];
this.hotitems.closealltabs = [this.nodes[0], mnuContextTabs.childNodes[2]];
this.hotitems.closeallbutme = [this.nodes[1], mnuContextTabs.childNodes[3]];

tabEditors.setAttribute("contextmenu", "mnuContextTabs");

tabEditors.addEventListener("close", function(e) {
_self.removeItem(e.page);
if (!e || !e.htmlEvent)
return;
var page = e.page;
Expand Down Expand Up @@ -143,6 +131,8 @@ module.exports = ext.register("ext/tabbehaviors/tabbehaviors", {

tabEditors.addEventListener("DOMNodeRemoved", function(e) {
var page = e.currentTarget;
_self.removeItem(page);

if (page.localName != "page" || e.relatedNode != this || page.nodeType != 1)
return;

Expand Down Expand Up @@ -181,6 +171,13 @@ module.exports = ext.register("ext/tabbehaviors/tabbehaviors", {
cycleKeyPressed = false;
}
});

tabEditors.addEventListener("aftersavedialogcancel", function(e) {
for (i = 0, l = _self.changedPages.length; i < l; i++) {
page = _self.changedPages[i];
page.removeEventListener("aftersavedialogclosed", arguments.callee);
}
});
},

closetab: function(page) {
Expand All @@ -192,47 +189,73 @@ module.exports = ext.register("ext/tabbehaviors/tabbehaviors", {
return false;
},

closealltabs: function() {
var tabs = tabEditors,
pages = tabs.getPages(),
_self = this;
closealltabs: function(callback) {
callback = typeof callback == "function" ? callback : null;
this.closeallbutme(1, callback);
},

save.saveAllInteractive(pages, function(all){
if (all == -100) //Cancel
return;
// ignore is the page that shouldn't be closed, null to close all tabs
closeallbutme: function(ignore, callback) {
ignore = ignore || tabEditors.getPage();
this.changedPages = [];
this.unchangedPages = [];

pages.each(function(page){
//page.$at.undo(-1);
_self.removeItem(page);
tabs.remove(page, true);
});
});
},
var page;
var pages = tabEditors.getPages();

closeallbutme: function(page) {
page = page || tabEditors.getPage();
var tabs = tabEditors,
pages = tabs.getPages(),
i = pages.length - 1,
set = [],
_self = this;
for (; i >= 0; --i) {
if (pages[i] == page) continue;
set.push(pages[i]);
var _self = this;
for (var i = 0, l = pages.length; i < l; i++) {
page = pages[i];

if (ignore && page == ignore)
continue;

if (page.$doc.getNode().getAttribute("changed") == "1") {
page.noAnim = true; // turn off animation on closing tab
this.changedPages.push(page);

page.addEventListener("aftersavedialogclosed", function(e) {
var curPage = _self.changedPages[0];
if (_self.changedPages.length && curPage.caption != e.currentTarget.caption)
return
_self.changedPages.shift();
this.removeEventListener("aftersavedialogclosed", arguments.callee);
if (_self.changedPages.length == 0) {
_self.closeUnchangedPages(function() {
if (callback)
callback();
});
}
else {
tabEditors.remove(_self.changedPages[0], null, true);
}
});
}
else {
this.unchangedPages.push(page);
}
}

save.saveAllInteractive(set, function(all){
if (all == -100) //Cancel
return;

set.each(function(page){
//page.$at.undo(-1);
_self.removeItem(page);
tabs.remove(page, true);
if (this.changedPages.length) {
tabEditors.remove(this.changedPages[0], null, true);
}
else {
this.closeUnchangedPages(function() {
if (callback)
callback();
});
});
}
},

return false;
closeUnchangedPages : function(callback) {
var page;
for (var i = 0, l = this.unchangedPages.length; i < l; i++) {
page = this.unchangedPages[i];
tabEditors.remove(page, null, true);
}

if (callback)
callback();
},

nexttab : function(){
Expand Down Expand Up @@ -445,10 +468,7 @@ module.exports = ext.register("ext/tabbehaviors/tabbehaviors", {
this.sep = null;
}
else if (!this.sep && (len || force)) {
if (len)
this.sep = mnuTabs.insertBefore(new apf.divider(), this.nodes[3].nextSibling);
else
this.sep = mnuTabs.appendChild(new apf.divider());
this.sep = mnuTabs.insertBefore(new apf.divider(), mnuTabs.childNodes[6]);
}

if (len < (force ? 19 : 20)) { // we already have 9 other menu items
Expand Down
Loading

0 comments on commit 5caca05

Please sign in to comment.