Powered By Blogger

Thursday, February 17, 2011

A Important tip, if you want extension UI better.

1> Use CSS to make changes in UI.
2> Use *.png type images to create transparency effects.
3> We can use flash objects whenever required using <html:iframe></html:iframe> tag in XUL objects.
4> Use always try and catch in function to catch error occured.

Helpful Resources to develop Mozilla Extension


http://www.borngeek.com/firefox/toolbar-tutorial/chapter-1/
 

http://ancaluca.blogspot.com/2007/10/java-firefox-extension.html
 

http://groups.google.com/group/mozilla.dev.tech.java/browse_thread/thread/41a2db6eb748e6f6
 
http://kb.mozillazine.org/Dev_:_Extensions - part of MozillaZine knowledge base

https://developer.mozilla.org/en/extensions 

https://developer.mozilla.org/en/setting_up_extension_development_environment

http://kb.mozillazine.org/Getting_started_with_extension_development#Setting_up_your_environment 

http://mozilla-firefox-extension-dev.blogspot.com/ 

http://blog.mozilla.com/addons/2009/02/06/making-extension-development-easier/ 

http://ostatic.com/blog/mozillas-jetpack-to-make-firefox-extension-development-easier-more-widespread

http://www.google.co.in/url?sa=t&source=web&cd=9&ved=0CEcQFjAI&url=http%3A%2F%2Fblog.mozilla.com%2Faddons%2F2009%2F01%2F28%2Fhow-to-develop-a-firefox-extension%2F&ei=ciBeTda5LM3trQfQqdHQDg&usg=AFQjCNGoFPV5LIWSPC3tZP487c9sgh_xeg&sig2=txlbI-iM_C8VmN4vcAQysw  




File i/o:
https://developer.mozilla.org/En/Code_snippets:File_I/O#Writing_to_a_file

Web: 
http://www.mozilla.org/projects/firefox/extensions/

How to write Firefox extensions:
http://extensions.roachfiend.com/howto.php

Writing Firefox/Thunderbird Extensions
http://www.bengoodger.com/software/mb/extensions/howto.html

From "the law of averages >> Writing Mozilla Extensions":
http://www.yergler.net/blog/archives/2004/05/20/writing-mozilla-extensions
http://devedge.netscape.com/viewsource/2002/toolbar/
GUID Generator: http://extensions.roachfiend.com/cgi-bin/guid.pl
Firefox Extension RDF Generator: http://ted.mielczarek.org


Books: 
"Creating Applications with Mozilla" by David Boswell, Brian King, Ian Oeschger, Pete Collins & Eric Murphy



Miscellaneous:


XUL Tutorial:
http://www.xulplanet.com/tutorials/xultu/

XUL Reference:
http://www.xulplanet.com/references/
 






Textured Wallpaper























Facebook Profile Picture - Check it out







Google AutoSuggestion:

Autosuggestion may not work properly if you are using Google Autosuggestion service provided below, use waitingfunction on textbox change event, so that, input will be slow and google will generate proper response.

//max sets the number of results to show in dropdown, up to 10
const max=10,C=Components,g=C.ID("a2e61347-0ab0-4597-879f-33aba7194225"),Ci=C.interfaces,Cg=Ci.nsIComponentRegistrar;
function gS(){};
gS.prototype={
startSearch:function(s,p,t,l){
var j=this,q=C.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
q.onload=function(){
var r=[],n=q.responseXML.getElementsByTagName('suggestion');
for (var i=0;i<Math.min(10,n.length);i++)
r.push(n[i].getAttribute('data'));
l.onSearchResult(j,new gR(4,r));
};
q.open('GET','http://google.com/complete/search?output=toolbar&q='+encodeURIComponent(s),true);
q.send(null);
},
stopSearch:function(){},
QueryInterface:function(a){return this}
}
function gR(z,r){this._z=z;this._r=r;}
gR.prototype={
_z:0,_r:[],
get searchResult(){return this._z},
get matchCount(){return this._r.length},
getValueAt:function(i){return this._r[i]},
getStyleAt:function(i)
{ if (i == 0)
return "suggestfirst";
else
return "suggesthint";
},
getImageAt:function(i){return ''},
QueryInterface:function(a){if(a.equals(Ci.nsIAutoCompleteResult))return this}
}
var gF={createInstance:function(o,i){return new gS().QueryInterface(i)}}
var gM={
registerSelf:function(c,f,l,t){c.QueryInterface(Cg).registerFactoryLocation(g,"Google AutoComplete",
"@mozilla.org/autocomplete/search;1?name=google-autocomplete",f,l,t)},
unregisterSelf:function(c,l,t){c.QueryInterface(Cg).unregisterFactoryLocation(g,l)},
getClassObject:function(c,a,i){return gF},
canUnload:function(c){return true}
}
function NSGetModule(c,f){return gM}

Waiting Function to be used








function waitingFunction(m)
{
    try
    {    
          var snooze = new Date(new Date().getTime() + m);
          while (new Date() < snooze){ }
    }catch (ee){alert(ee.message);}
}

To execute this function call like this: waitingFunction(1000), here 1000 is milliseconds.