rendered paste body/*
Resize Textarea 0.2
Original coding by Raik Juergens
Contact: borstel33@web.de
TEXTAREA.baseURI
*/
var resizeTA = {
readFile: function(){
var req = new XMLHttpRequest();
req.open('GET', 'chrome://resizeta/content/data.xml', false);
req.send(null);
// print the name of the root element or error message
var dom = req.responseXML;
//alert(dom.documentElement.nodeName == 'parsererror' ? 'error while parsing' : dom.documentElement.nodeName);
},
config: function(args) {
var settingsHandle = window.openDialog("chrome://resizeta/content/settings.xul", "Config", "chrome,resizable,modal,centerscreen",args);
settingsHandle.focus();
},
onLoad: function() {
var menu = document.getElementById('contentAreaContextMenu');
menu.addEventListener('popupshowing',this.showContext,false);
this.ProfileName();
this.readFile();
return;
},
ProfileName: function() {
var profileName = Components.classes['@mozilla.org/file/directory_service;1']
.getService(Components.interfaces.nsIProperties).get('ProfD', Components.interfaces.nsIFile)
.QueryInterface(Components.interfaces.nsILocalFile).path;
profileName = profileName.slice(profileName.lastIndexOf("\\")+1,profileName.length);
profileName = profileName.slice(profileName.indexOf('.')+1,profileName.length);
//document.getElementById("main-window").setAttribute("title", profileName);
document.getElementById('main-window').setAttribute('titlemodifier', profileName);
},
showContext: function(e) {
with(gContextMenu){
showItem("resizeta-start",(gContextMenu.onTextInput && gContextMenu.target.style.MozUserSelect!='none'));
//setItemAttr("resizeta-start","disabled",(gContextMenu.target.style.MozUserSelect=='none'));
showItem("resizeta-autowidth", gContextMenu.onTextInput);
showItem("resizeta-wrap", gContextMenu.onTextInput);
setItemAttr("resizeta-wrap", "checked", (gContextMenu.target.wrap == 'off'));
}
},
startRSZ: function(){
var TA = gContextMenu.target;
with(TA){
addEventListener('mousedown', this.startMOV, true);
addEventListener('keypress', this.stopRSZ, false);
addEventListener('dblclick', this.stopRSZ, false);
style.MozUserSelect='none';
setAttribute('resizeTAcursor',TA.style.cursor);
setAttribute('resizeTAbg',TA.style.backgroundColor);
setAttribute('resizeTAtxt',TA.style.color);
switch(nodeName){
case 'TEXTAREA':
style.cursor = 'url(chrome://resizeta/skin/mouseup.gif), move';
break;
case 'INPUT':
style.cursor = 'e-resize';
break;
}
style.color = 'graytext';
style.backgroundColor = '-moz-dialog';
focus();
}
},
stopRSZ: function(e){
with(e.target){
removeEventListener('mousedown', resizeTA.startMOV, true);
removeEventListener('keypress', resizeTA.stopRSZ, false);
removeEventListener('dblclick', resizeTA.stopRSZ, false);
//alert(baseURI);
style.cursor = this.getAttribute('resizeTAcursor');
style.color = this.getAttribute('resizeTAtxt');
style.backgroundColor = this.getAttribute('resizeTAbg');
style.MozUserSelect = '';
removeAttribute('resizeTAcursor', 1);
removeAttribute('resizeTAbg', 1);
removeAttribute('resizeTAtxt', 1);
}
e.preventDefault();
if(e.type == "keypress" && e.which == 115) resizeTA.config();
},
startMOV: function(e){
if(e.which != 1)return;
switch(e.target.nodeName){
case 'TEXTAREA':
e.target.style.cursor = 'url(chrome://resizeta/skin/mousedown.gif), move';
e.target.ownerDocument.addEventListener('mousemove', resizeTA.resizeTA, false);
break;
case 'INPUT':
e.target.ownerDocument.addEventListener('mousemove', resizeTA.resizeIP, true);
break;
default:
return;
}
resizeTA.curTA = e.target;
resizeTA.TAw = e.pageX;
resizeTA.TAh = e.pageY;
if(!e.target.style.width){
var w = e.target.offsetWidth;
e.target.style.width = w + 'px';
e.target.style.width += (e.target.offsetWidth - w);
}
if(!e.target.style.height){
var h = e.target.offsetHeight;
e.target.style.height = h + 'px';
e.target.style.height += (e.target.offsetHeight - h);
}
//var kWindowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
//var oBrowser = kWindowMediator.getMostRecentWindow("navigator:browser");
//oBrowser.addEventListener('mouseup', resizeTA.stopMOV, false);
content.addEventListener('mouseup', resizeTA.stopMOV, true);
},
stopMOV: function(e){
if(e.which != 1)return;
//Components.reportError("resizeTA: " + e.type + " " + e.target.nodeName);
switch(resizeTA.curTA.nodeName){
case 'TEXTAREA':
resizeTA.curTA.style.cursor = 'url(chrome://resizeta/skin/mouseup.gif), move';
e.target.ownerDocument.removeEventListener('mousemove', resizeTA.resizeTA, false);
break;
case 'INPUT':
e.target.ownerDocument.removeEventListener('mousemove', resizeTA.resizeIP, true);
break;
default:
}
//var kWindowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
//var oBrowser = kWindowMediator.getMostRecentWindow("navigator:browser");
//oBrowser.removeEventListener('mouseup', resizeTA.stopMOV, false);
resizeTA.soundPlay("start.wav");
content.removeEventListener('mouseup', resizeTA.stopMOV, true);
},
resizeIP: function(e){
resizeTA.curTA.style.width = parseInt(resizeTA.curTA.style.width) + (e.pageX - resizeTA.TAw) + 'px';
resizeTA.TAw = e.pageX;
},
resizeTA: function(e){
resizeTA.curTA.style.width = parseInt(resizeTA.curTA.style.width) + (e.pageX - resizeTA.TAw) + 'px';
resizeTA.curTA.style.height = parseInt(resizeTA.curTA.style.height) + (e.pageY - resizeTA.TAh) + 'px';
resizeTA.TAw = e.pageX;
resizeTA.TAh = e.pageY;
},
autoWidth: function(){
var TA = gContextMenu.target;
var w1 = content.scrollMaxX;
TA.style.width = content.innerWidth + 'px';
var w2 = content.scrollMaxX - parseInt(w1);
TA.style.width = (parseInt(TA.style.width) - parseInt(w2)) + 'px';
},
soundPlay: function(file){
var sample = Components.classes["@mozilla.org/sound;1"].createInstance();
sample = sample.QueryInterface(Components.interfaces.nsISound);
var ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var uri = ios.newURI("chrome://resizeta/skin/" + file, null, null);
sample.play(uri);
}
};
window.addEventListener("load", function(e) { resizeTA.onLoad(e); }, false);