Wednesday, March 13, 2013

comment_icon 0 Web.XML Explained


The web.xml Deployment Descriptor file tell about that how application will be deployed in the server or servlet container such as TOMCAT
This file is Required for every application which will be deployed on Tomcat/Apache . The location of Web.XML is always Application-root/WEB-INF/web.xml or WebContent/WEB-INF/web.xml

There is minimum one tag is required in web.xml that is  <web-app> TAG. This  contains following information
 <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
</web-app>

WEB-APP CAN CONTAIN VARIOUS DIFFERENT ELEMNETS. A complete web-app example is given below please click the TAG for more details

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">

        <!-- ========================================================== -->
        <!-- General -->
        <!-- ========================================================== -->

        <!-- Name the application -->
        <display-name>Example App</display-name>
        <description>An example application which is used to play with some of the features of Tomcat</description>

        <!-- This app is cluster-ready -->
        <distributable />

        <!-- Set timeout to 120 minutes -->
        <session-config>
                <session-timeout>120</session-timeout>
        </session-config>


        <!-- ========================================================== -->
        <!-- Custom Tag Libraries -->
        <!-- ========================================================== -->

        <!-- Taglib declarations are no longer required since JSP 2.0, see Removing taglib from web.xml -->
        <!-- The <taglib> did not need to be a child of <jsp-config> in earlier versions but is required as of Tomcat 7 -->
        <!-- Note that you can only have one <jsp-config> element per web.xml -->
        <!--
        <jsp-config>
                <taglib>
                        <taglib-uri>mytags</taglib-uri>
                        <taglib-location>/WEB-INF/jsp/mytaglib.tld</taglib-location>
                </taglib>
        </jsp-config>
        -->


        <!-- ========================================================== -->
        <!-- JSP Configuration -->
        <!-- ========================================================== -->

        <jsp-config>
                <jsp-property-group>
                        <url-pattern>*.jsp</url-pattern>
                        <include-prelude>/WEB-INF/jspf/prelude1.jspf</include-prelude>
                        <include-coda>/WEB-INF/jspf/coda1.jspf</include-coda>
                </jsp-property-group>
        </jsp-config>


        <!-- ========================================================== -->
        <!-- Context Parameters -->
        <!-- ========================================================== -->

        <context-param>
                <description>Enable debugging for the application</description>
                <param-name>debug</param-name>
                <param-value>true</param-value>
        </context-param>
        <context-param>
                <description>The email address of the administrator, used to send error reports.</description>
                <param-name>webmaster</param-name>
                <param-value>address@somedomain.com</param-value>
        </context-param>


        <!-- ========================================================== -->
        <!-- JNDI Environment Variables -->
        <!-- ========================================================== -->

        <env-entry>
                <env-entry-name>webmasterName</env-entry-name>
                <env-entry-value>Ms. W. Master</env-entry-value>
                <env-entry-type>java.lang.String</env-entry-type>
        </env-entry>
        <env-entry>
                <env-entry-name>cms/defaultUserSettings/recordsPerPage</env-entry-name>
                <env-entry-value>30</env-entry-value>
                <env-entry-type>java.lang.Integer</env-entry-type>
        </env-entry>
        <env-entry>
                <env-entry-name>cms/enableXMLExport</env-entry-name>
                <env-entry-value>false</env-entry-value>
                <env-entry-type>java.lang.Boolean</env-entry-type>
        </env-entry>
        <env-entry>
                <env-entry-name>cms/enableEmailNotifications</env-entry-name>
                <env-entry-value>true</env-entry-value>
                <env-entry-type>java.lang.Boolean</env-entry-type>
        </env-entry>


        <!-- ========================================================== -->
        <!-- Servlets -->
        <!-- ========================================================== -->

        <!-- Simple Servlet, provide a name, class, description and map to URL /servlet/SimpleServlet -->
        <servlet>
                <servlet-name>Simple</servlet-name>
                <servlet-class>SimpleServlet</servlet-class>
                <description>This is a simple Hello World servlet</description>
        </servlet>
        <servlet-mapping>
                <servlet-name>Simple</servlet-name>
                <url-pattern>/servlet/SimpleServlet</url-pattern>
        </servlet-mapping>

        <!-- CMS Servlet, responds to *.cms URL's -->
        <servlet>
                <!-- Identification -->
                <servlet-name>cms</servlet-name>
                <servlet-class>com.metawerx.servlets.ContentManagementSystem</servlet-class>
                <description>This servlet handles requests for the CMS (it is a controller in an MVC architecture)</description>

                <!-- This servlet has two parameters -->
                <init-param>
                        <param-name>debug</param-name>
                        <param-value>true</param-value>
                </init-param>
                <init-param>
                        <param-name>detail</param-name>
                        <param-value>2</param-value>
                </init-param>

                <!-- Load this servlet when the application starts (call the init() method of the servlet) -->
                <load-on-startup>5</load-on-startup>
                <!-- <run-at>0:00, 6:00, 12:00, 18:00</run-at> This tag is only valid for Resin -->
        </servlet>

        <!-- Map some URLs to the cms servlet (demonstrates *.extension mapping) -->
        <servlet-mapping>
                <!-- For any URL ending in .cms, the cms servlet will be called -->
                <servlet-name>cms</servlet-name>
                <url-pattern>*.cms</url-pattern>
        </servlet-mapping>

        <!-- Rewriter Servlet, responds to /content/* and /admin/RewriterStatistics URL's -->
        <!-- Define a servlet to respond to /content/* URL's -->
        <servlet>
                <servlet-name>rewriter</servlet-name>
                <servlet-class>com.metawerx.servlets.URLRewriter</servlet-class>
        </servlet>

        <!-- Map some URL's to the rewriter servlet (demonstrates /path/* and specific URL mapping) -->
        <servlet-mapping>
                <!-- For any URL starting with /content/, the rewriter servlet will be called -->
                <servlet-name>rewriter</servlet-name>
                <url-pattern>/content/*</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
                <!-- The rewriter servlet can also be called directly as /admin/RewriterStatistics, to return stats -->
                <servlet-name>rewriter</servlet-name>
                <url-pattern>/admin/RewriterStatistics</url-pattern>
        </servlet-mapping>

        <!-- PathJSP Servlet, maps /shop/item/* URL's to a JSP file -->
        <!-- Define a JSP file to respond to /shop/item/* URL's -->
        <servlet>
                <servlet-name>pathjsp</servlet-name>
                <jsp-file>pathfinder.jsp</jsp-file>
        </servlet>

        <!-- Map some URL's to the pathjsp servlet (demonstrates /long/path/* URL mapping) -->
        <servlet-mapping>
                <!-- For any URL starting with /shop/item/, the pathjsp servlet will be called -->
                <servlet-name>pathjsp</servlet-name>
                <url-pattern>/shop/item/*</url-pattern>
        </servlet-mapping>


        <!-- ========================================================== -->
        <!-- Filters -->
        <!-- ========================================================== -->

        <!-- Example filter to set character encoding on each request (from Tomcat servlets-examples context) -->
        <filter>
                <filter-name>Set Character Encoding</filter-name>
                <filter-class>filters.SetCharacterEncodingFilter</filter-class>
                <init-param>
                        <param-name>encoding</param-name>
                        <param-value>EUC_JP</param-value>
                </init-param>
        </filter>
        <filter-mapping>
                <filter-name>Set Character Encoding</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>

        <!-- Example filter to dump the HTTP request at the top of each page (from Tomcat servlets-examples context) -->
        <filter>
                <filter-name>Request Dumper Filter</filter-name>
                <filter-class>filters.RequestDumperFilter</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>Request Dumper Filter</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>


        <!-- ========================================================== -->
        <!-- Listeners -->
        <!-- ========================================================== -->

        <!-- Define example application events listeners -->
        <listener>
                <listener-class>com.metawerx.listener.ContextListener</listener-class>
        </listener>
        <listener>
                <listener-class>com.metawerx.listener.SessionListener</listener-class>
        </listener>


        <!-- ========================================================== -->
        <!-- Security -->
        <!-- ========================================================== -->

        <!-- Define roles -->
        <security-role>
                <role-name>admin</role-name>
        </security-role>
        <security-role>
                <role-name>cms_editors</role-name>
        </security-role>
        
        <!-- Define a constraint to restrict access to /private/* -->
        <security-constraint>

                <display-name>Security constraint for the /private folder</display-name>

                <web-resource-collection>
                        
                        <web-resource-name>Protected Area</web-resource-name>
                        <url-pattern>/private/*</url-pattern>
                        
                        <!-- If you list http methods, only those methods are protected. -->
                        <!-- Leave this commented out to protect all access -->
                        <!--
                        <http-method>DELETE</http-method>
                        <http-method>GET</http-method>
                        <http-method>POST</http-method>
                        <http-method>PUT</http-method>
                        -->

                </web-resource-collection>

                <auth-constraint>
                        <!-- Only only administrator and CMS editors to access this area -->
                        <role-name>admin</role-name>
                        <role-name>cms_editors</role-name>
                </auth-constraint>

        </security-constraint>

        <!-- FORM based authentication -->
        <!-- Leave this commented out, we will use BASIC (HTTP) authentication instead -->
        <!--
        <login-config>
                <auth-method>FORM</auth-method>
                <form-login-config>
                        <form-login-page>/login.jsp</form-login-page>
                        <form-error-page>/error.jsp</form-error-page>
                </form-login-config>
        </login-config>
        -->
        <!-- This application uses BASIC authentication -->
        <login-config>
                <auth-method>BASIC</auth-method>
                <realm-name>Editor Login</realm-name>
        </login-config>

        <!-- Define a constraint to force SSL on all pages in the application -->
        <security-constraint>

                <web-resource-collection>
                        <web-resource-name>Entire Application</web-resource-name>
                        <url-pattern>/*</url-pattern>
                </web-resource-collection>

                <user-data-constraint>
                        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
                </user-data-constraint>

        </security-constraint>


        <!-- ========================================================== -->
        <!-- Error Handler -->
        <!-- ========================================================== -->

        <!-- Define an error handler for 404 pages -->
        <error-page>
                <error-code>404</error-code>
                <location>/error404.jsp</location>
        </error-page>

        <!-- Define an error handler for java.lang.Throwable -->
        <error-page>
                <exception-type>java.lang.Throwable</exception-type>
                <location>/errorThrowable.jsp</location>
        </error-page>


        <!-- ========================================================== -->
        <!-- Extra MIME types -->
        <!-- ========================================================== -->

        <!-- Set XML mime-mapping so spreadsheets open properly instead of being sent as an octet/stream -->
        <mime-mapping>
                <extension>xls</extension>
                <mime-type>application/vnd.ms-excel</mime-type>
        </mime-mapping>


        <!-- ========================================================== -->
        <!-- Locale -->
        <!-- ========================================================== -->

        <!-- Set Locale Encoding -->
        <locale-encoding-mapping-list>
                <locale-encoding-mapping>
                        <locale>ja</locale>
                        <encoding>Shift_JIS</encoding>
                </locale-encoding-mapping>
        </locale-encoding-mapping-list>


        <!-- ========================================================== -->
        <!-- Welcome Files -->
        <!-- ========================================================== -->

        <!-- Define, in order of preference, which file to show when no filename is defined in the path -->
        <!-- eg: when user goes to http://yoursite.com/ or http://yoursite.com/somefolder -->
        <!-- Defaults are provided in the server-wide web.xml file, such as index.jsp, index.htm -->
        <!-- Note: using this tag overrides the defaults, so don't forget to add them here -->
        <welcome-file-list>
                <!-- Use index.swf if present, or splash.jsp, otherwise just look for the normal defaults -->
                <welcome-file>index.swf</welcome-file>
                <welcome-file>splash.jsp</welcome-file>
                <welcome-file>index.html</welcome-file>
                <welcome-file>index.htm</welcome-file>
                <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>

</web-app>

comment_icon 2 File Download Script For JSP

In this Tutorial  i'm going to explain how you can serve files to your users using JSP. Since we are not serving a HTML page so first we need to tell the browser that what kind of data we are going to serve for that we set Response Headers
 response.setContentType("application/msword");
 response.addHeader( "Content-Disposition","attachment; filename=your file name" );
Here application/msword is the mime type you can search internet for diff. mime type required for  diff. extensions few commonly used are
  • image/jpeg
  • text/plain
  • application/pdf

link format for filedownload

<a href="download.jsp?filename=myresume.doc">Download my resume</a>

Download.jsp


<%@ page  import="java.io.FileInputStream" %>
<%@ page  import="java.io.BufferedInputStream"  %>
<%@ page  import="java.io.File"  %>
<%@ page import="java.io.IOException" %>


<%

   // you  can get your base and parent from the database
   String base="file";
   
   String filename=request.getParameter("filename");
// you can  write http://localhost
   String filepath="http://localhost:8080/filedownload/"+base+"/";

BufferedInputStream buf=null;
   ServletOutputStream myOut=null;

try{

myOut = response.getOutputStream( );
     File myfile = new File(filepath+filename);
     
     //set response headers
     response.setContentType("application/msword");
     
     response.addHeader(
        "Content-Disposition","attachment; filename="+filename );

     response.setContentLength( (int) myfile.length( ) );
     
     FileInputStream input = new FileInputStream(myfile);
     buf = new BufferedInputStream(input);
     int readBytes = 0;

     //read from the file; write to the ServletOutputStream
     while((readBytes = buf.read( )) != -1)
       myOut.write(readBytes);

} catch (IOException ioe){
     
        throw new ServletException(ioe.getMessage( ));
         
     } finally {
         
     //close the input/output streams
         if (myOut != null)
             myOut.close( );
          if (buf != null)
          buf.close( );
         
     }

   
   
%>

Project Structure


Download zip

Wednesday, February 27, 2013

comment_icon 0 Integrating Image slider to a Web Page

In this tutorial step by step i am going to expalin that how you can integrate slider into your web application.

Prerequisite

Download thie required files . i packed all required files in a zip , click Here to download zip if you Downloded the files . then extract them and folllow these steps.
  1. create a New HTML file or if you want to integrate in existing Page . create a New div tag whre ever you want and follow next step
  2. Copy all files to your project directory if you want to add this to existing Project
  3. add following files to your Headerof the Page
       
         <link rel="stylesheet" href="themes/default/default.css" type="text/css" media="screen" />
         <link rel="stylesheet" href="themes/light/light.css" type="text/css" media="screen" />
         <link rel="stylesheet" href="themes/dark/dark.css" type="text/css" media="screen" />
         <link rel="stylesheet" href="themes/bar/bar.css" type="text/css" media="screen" />
         <link rel="stylesheet" href="nivo-slider.css" type="text/css" media="screen" />
       
       
  4. Add Following HTML to the Page
      
      <div class="slider-wrapper theme-default">
                <div id="slider" class="nivoSlider">
                    <img src="images/toystory.jpg" data-thumb="images/toystory.jpg" alt="" />
                    <a href="http://dev7studios.com"><img src="images/up.jpg" data-thumb="images/up.jpg" alt="" title="This is an example of a caption" /></a>
                    <img src="images/walle.jpg" data-thumb="images/walle.jpg" alt="" data-transition="slideInLeft" />
                    <img src="images/nemo.jpg" data-thumb="images/nemo.jpg" alt="" title="#htmlcaption" />
                </div>
                <div id="htmlcaption" class="nivo-html-caption">
                    <strong>This</strong> is an example of a <em>HTML</em> caption with <a href="#">a link</a>. 
                </div>
            </div>
      
      
    • In this above code img tag contain your sliding image . add as many as you want . yoou can replce image source to your own image source.
    • data-thumb attribute contains the thumbnail image url.
    • title attribute contains the caption you want to display
  5. Add following to bottom of your Page. we are adding at bottom so these scripts are loded after other load completes so deosn't affect your Page data.
    
      <script type="text/javascript" src="scripts/jquery-1.9.0.min.js"></script>
        <script type="text/javascript" src="jquery.nivo.slider.js"></script>
        <script type="text/javascript">
        $(window).load(function() {
            $('#slider').nivoSlider();
        });
        </script>
     
  6. if you still have doubt you can open demo.html and see the sample code.

Friday, February 22, 2013

comment_icon 0 Create Relationship Timeline on Facebook


In Facebook Timeline there is feature of creating a Relationship timeline By which you can see what happens between you and other person on Facebook even you can share it with your friends , customize it by uploading cover photo.

How to build it ? 

1. in chat bar hover on the person name to whom with you wanna see relationship , it display a box ,click on see friendship link

2. open user profile , click on settings icon tab and then select see friendship.

Wednesday, February 20, 2013

comment_icon 1 How to Track Facebook Pending Friend Requests

Finally there is A Trick by which you can track your Facebook Friend Requests and you can save your self from getting blocked for 30 days .

How This Trick Works ?

This is Just two Step Process and you need not to be a Geek for that .

  1. Go to your Profile .
  2. Click on Activity Log





     Tab . this will open a new page. which looks something same as shown below 
  3. check on Include only Me Activity box so it will be easy to see your recent activities.
  4. Now Scroll Down and See your sent Requests Activity . it will be something like.                         Abhimanyu sent Priya a friend request.
  5. Now click the User Name and cancel Request.
  6. Have Fun ! and don't forget to subscribe .






Tuesday, February 12, 2013

comment_icon 0 Facebook Developers Live


Today Facebook Announced Its New Section for developers Called Facebook Developers Live.it will be going live from feb. 20th. To join developers Live visit here

what it Provides For Developer ?

It provides all the resources for developing and growing your Facebook Application. Specially the most needed section of Facebook developer "Video Tutorials"






Wednesday, February 6, 2013

comment_icon 0 Are you Ready For New Ubuntu Phone ??



Recently Ubuntu Announced that its Phone will be available in market  in last quarter of 2013.So Are you ready for getting hands on New Phone Experience .
At the Press Release in London Mark Shuttleworth said that
 Calling the product launch a “significant next step in our history”, he also gave demo of the device
Ubuntu Phone Preview
Ubuntu Phone Preview

But What's Special about Ubuntu ?

Ubuntu Provides some Features that makes your Phone Experience amazing 
  1. Access Everything by just 1 finger swipe
  2. Full utilization of Mobile Screen
  3.  Everything on screen but Nothing shown until you Swipe 
  4. Super fast Switching Between Apps

Main features of Ubuntu Phone

  • Edge magic: thumb gestures from all four edges of the screen that enable users to find content and switch between apps faster than they can on other phones.
  • Focus on content, not the controls: immerses the user in their content. Controls only appear when they want them.
  • Integrated search: Search for anything that’s saved on the phone, any content from online providers like Amazon and even menu functions within applications.
  • HTML5 apps, web apps and native apps are equal citizens – they all get their own icons and access to system services, so the user need never know the difference.
  • Personalised welcome screen: a visualisation of an individual’s social interactions (infographics on calls, SMS, Twitter) – ever changing, totally personal.

Special Feature Images

Ubuntu Phone infrographic showing duration of talk
Ubuntu Animated home screen With Notification

What's For Developer ?


Useful links

Get Started
resources
Publish Apps

Saturday, February 2, 2013

comment_icon 0 Brackets : An Open Source Text Editor from Adobe

Finally Adobe made something Open Source. Brackets  is the opensource text editor specially designed for the Web developer. there are some amazing features like inline editing,live edit (preview is shown in chrome) that most of the web developer gonna love. One more thing is liked about this is that it built by using java script, html 5,CSS , So as they say
   For the WEB by the WEB



Where To get it ?

you can get it here. current release it Sprint 19.

Basic features  how to use ?

For inline text editing just put your mouse on the html tag like body,div,h1 etc and press CTRL+E 














Live Preview 

To Use the Bracket live Preview feature click on the icon in  top right , just as icon highlighted in below image.

Bracket Video Demo 

Bracket extensions

Bracket mainly focus on the web development and there  are so many extension available to increase your productivity and performance . these extensions are categorized under different categories but  there is no GUI for installing the extensions however you can manually download and copy the extension and copy them to extension directory and then browse it using menu bar. 
Code/Text Editing
  • Select Parent: Quick way to select the block enclosing the selection
  • Web Fonts: Simple interface for adding/deleting/swapping Google Web Fonts in a CSS file
  • Kill Ring: Adds an Emacs-style kill ring to the editor.
  • Spell Checker: integrates the spell checker web service After The Deadline - now in beta - Supports English, German, French, Spanish and Portuguese. Note: Now compatible with brackets build >== build 0.18.x /Sprint 18
Snippets & Shorthand
  • Emmet/Zen Coding: Adds Emmet (Zen Coding) support to Brackets (download here).
  • Snippets: Assign trigger keys to insert snippets. Configurable with JSON
  • Prefixr: Generate browser specific CSS prefixes using the prefixr service.
  • Quick Markup: fast HTML markup generation as you type.
  • HTML Templates: Pastes in barebones HTML code for different doctypes.
  • Auto-match pairs: auto-complete Paranthesis, Brackets, Braces, Double and Single Quotes...
Code/Text Formatting
Code Generation
  • App Cache Buddy: Generate and validate application cache manifests.
  • Annotate: Generates JSDoc annotations for your functions
Language Support
  • JavaScript Code Hints: Code hinting (aka autocompletion) for JavaScript files in Brackets.
  • PHP: adds PHP function definition support to QuickOpen search
General Functionality
  • Extension Manager: Install, Remove, and upgrade your extensions from the cloud from inside Brackets (requires node).
  • Extension Toolkit An extension to make building Brackets extensions easier.
  • Related Files: Discovers and allows you to open related files in your project.
  • File Navigation Shortcuts: shortcuts for switching to next/previous editor (non-MRU order), and a version of Quick Open scoped to only open files.
  • Open File from URL: Opens any href and rel atribute urls in editor on ALT+0 shortcut. Currently works only with existing files.
  • Brackets Commands Guide: Search and execute commands by typing part of their name, similar to Quicksilver (or Sublime's Ctrl+Shift+P or Eclipse's Ctrl+3).
  • Open Containing Folder: Opens folder containing current file or a file/folder in Sidebar. Added keyboard shortcut CTRL+ALT+O for opening folder containing document opened in editor.
  • Bookmarks: Navigate within a document using bookmarks.
  • TestQuickly: simple extension to run unit tests with a keystroke (handy for Brackets core and extension developers)
  • PageSuck: prompts for a URL and pulls that page's HTML directly into the editor as a new file
Live Development
  • Debugger: Brackets Debugger for the Live Development browser.
  • Everyscrub: Everything's a scrubber! Cmd/Ctrl + drag on any number or hex color to scrub its value and update the browser in real time.
  • Reload in Browser: Adds a toolbar button and shortcut to reload the page in the browser
  • V8/Node Live Development: Updates scripts running in Node.js as you type
Visual Editing
  • Edge Web Fonts: Browse free fonts from the Edge Web Fonts collection, with thumbnails. Activated via CSS code hints for font-family.
  • Hover Preview: Displays a preview when hovering over a color value, gradient, or image filename.
  • CSS Exclusion Shape Viewer: Quick Edit on an exclusion shape definition in CSS displays the shape.
  • SVG Preview: Live preview SVG files in an inline panel while you edit them.
  • Markdown Preview: Live preview of Markdown files, updated as the document is edited.
External Tools
  • BracketLESS: Compiles LESS files to CSS on save
  • GitHub: Implements the GitHub API, including oAuth. Currently functionality limited to Gists.
  • ToGist: Create an anonymous gist from the current selection.
  • PhoneGap Extension for Brackets: Manage PhoneGap Build projects from Brackets.
  • (See also Prefixr above).
Documentation
Linting & Warnings
Deprecated Extensions
  • Color Editor: Quick Edit on a hex/rgb/hsl color opens an inline color picker, plus a listing of all colors used in the file. (Merged into Brackets as of Sprint 17).
  • Color Picker: Quick Edit on a hex color opens an inline color picker. (A color picker is built into Brackets as of Sprint 17).
  • Editor Shortcuts: Keyboard shortcut to delete line. (This command is built into Brackets as of Sprint 15).
  • MDNLookup: Includes a way of creating an extensions toolbar and adding buttons to the toolbar with callbacks. Requires a slight change to the core. (Does not work in current versions of Brackets).