/**
 * The Application class which is used to represent an application.
 */
Ext.define("Ext.space.applications.Application", {
 
 
     /**
     * Application Name
     * @readonly
     * @type {String}
     */
    name: null,
 
     /**
     * The URL to the application's icon
     * @readonly
     * @type {String}
     */
    icon: null,
 
    /**
     * The URL to the application's icon
     * @readonly
     * @type {String}
     */
    icon: null,
 
 
    /**
     * Is this application protected by a VPN.
     * If it is, then this property will be object containing the name and type of the VPN 
     * @readonly
     * @type {Object}
     */
    vpn: null,
 
    /**
     * The URL to the application
     * @readonly
     * @type {String}
     */
    url: null,
 
    /**
     * @private
     */
    constructor: function(props) {
        // just pull in everything 
        for (var p in props) {
            if (props.hasOwnProperty(p)) {
                this[p] = props[p];
            }
        }
    },
 
    /**
     * Open this application.
     *
     * @return {Ext.space.Promise} Promise which will fulfills when the application is
     *                       successfully launched.
     */
    open: function() {
        return Ext.space.Applications.open(this);
    }
});