Commits

Sebastian Sdorra  committed f143882

added extjs ui

  • Participants
  • Parent commits 1faeb70

Comments (0)

Files changed (902)

File scm-webapp/src/main/webapp/index.html

-<!--
-To change this template, choose Tools | Templates
-and open the template in the editor.
--->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
+
 <html>
   <head>
-    <title></title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
+    <link rel="stylesheet" type="text/css" href="resources/extjs/resources/css/ext-all.css" />
+    <link rel="stylesheet" type="text/css" href="resources/extjs/resources/css/xtheme-gray.css" />
+    <link rel="stylesheet" type="text/css" href="resources/css/style.css" />
+
+    <script type="text/javascript" src="resources/extjs/adapter/ext/ext-base.js"></script>
+    <script type="text/javascript" src="resources/extjs/ext-all-debug.js"></script>
+
+    <script type="text/javascript" src="resources/js/global.js"></script>
+    <script type="text/javascript" src="resources/js/sonia.group.js"></script>
+    <script type="text/javascript" src="resources/js/sonia.repository.js"></script>
+    <script type="text/javascript" src="resources/js/layout.js"></script>
+
+
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
-
+    <title>SCM-WebAPP</title>
   </head>
   <body>
-    <h1>Content</h1>
-    <pre></pre>
+
+    <!-- use class="x-hide-display" to prevent a brief flicker of the content -->
+    <div id="north" class="x-hide-display">
+
+      <div id="header" style="visibility: visible; ">
+        <div id="appTitle" class="left-side">
+          <h1>SCM Manager</h1>
+          <p>SCM Repository Management</p>
+        </div>
+        <div  id="logo" class="right-side">
+          <img src="resources/images/logo.gif" alt="Ostfalia Hochschule für angewandte Wissenschaften">
+        </div>
+      </div>
+
+    </div>
+    <div id="west" class="x-hide-display">
+      <ul>
+        <li><a id="groups">Groups</a></li>
+      </ul>
+    </div>
+    <div id="settings">
+      <ul>
+        <li><a href="#">Test</a></li>
+      </ul>
+    </div>
+    <div id="repository-tab" class="x-hide-display">
+      <h1>SCM Managers</h1>
+    </div>
+    <div id="props-panel" class="x-hide-display" style="width:200px;height:200px;overflow:hidden;">
+    </div>
+    <div id="south" class="x-hide-display">
+
+      <div id="footer" style="visibility: visible; ">
+        <div class="left-side">
+          © <a target="_blank" href="http://www.ostfalia.de">Ostfalia</a>
+          –
+          <a target="_blank" href="http://www.ostfalia.de/rz">Rechenzentrum</a>
+        </div>
+        <div class="right-side">
+          <a href="#imprint">Impressum</a>
+        </div>
+      </div>
+
+    </div>
+
   </body>
-</html>
+</html>

File scm-webapp/src/main/webapp/resources/css/style.css

+/* 
+    Document   : style
+    Created on : Aug 18, 2010, 3:14:05 PM
+    Author     : Sebastian Sdorra
+    Description:
+        Purpose of the stylesheet follows.
+*/
+
+/* 
+   TODO customize this sample style
+   Syntax recommendation http://www.w3.org/TR/REC-CSS2/
+*/
+
+#header {
+  margin: 5px;
+}
+
+#appTitle {
+  color: #004077;
+  font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
+  margin-top: 20px;
+}
+
+#appTitle h1 {
+  font-size: 24px;
+  font-weight: bold;
+}
+
+.right-side {
+  float: right;
+}
+
+.left-side {
+  float: left;
+}
+
+#south {
+  font-size: 12px;
+}
+
+#footer a {
+  color: #666;
+  font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
+  margin-top: 20px;
+}

File scm-webapp/src/main/webapp/resources/extjs/adapter/ext/ext-base-debug-w-comments.js

+/*!
+ * Ext JS Library 3.2.1
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+// for old browsers
+window.undefined = window.undefined;
+
+/**
+ * @class Ext
+ * Ext core utilities and functions.
+ * @singleton
+ */
+
+Ext = {
+    /**
+     * The version of the framework
+     * @type String
+     */
+    version : '3.2.1',
+    versionDetail : {
+        major: 3,
+        minor: 2,
+        patch: 1
+    }
+};
+
+/**
+ * Copies all the properties of config to obj.
+ * @param {Object} obj The receiver of the properties
+ * @param {Object} config The source of the properties
+ * @param {Object} defaults A different object that will also be applied for default values
+ * @return {Object} returns obj
+ * @member Ext apply
+ */
+Ext.apply = function(o, c, defaults){
+    // no "this" reference for friendly out of scope calls
+    if(defaults){
+        Ext.apply(o, defaults);
+    }
+    if(o && c && typeof c == 'object'){
+        for(var p in c){
+            o[p] = c[p];
+        }
+    }
+    return o;
+};
+
+(function(){
+    var idSeed = 0,
+        toString = Object.prototype.toString,
+        ua = navigator.userAgent.toLowerCase(),
+        check = function(r){
+            return r.test(ua);
+        },
+        DOC = document,
+        isStrict = DOC.compatMode == "CSS1Compat",
+        isOpera = check(/opera/),
+        isChrome = check(/\bchrome\b/),
+        isWebKit = check(/webkit/),
+        isSafari = !isChrome && check(/safari/),
+        isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2
+        isSafari3 = isSafari && check(/version\/3/),
+        isSafari4 = isSafari && check(/version\/4/),
+        isIE = !isOpera && check(/msie/),
+        isIE7 = isIE && check(/msie 7/),
+        isIE8 = isIE && check(/msie 8/),
+        isIE6 = isIE && !isIE7 && !isIE8,
+        isGecko = !isWebKit && check(/gecko/),
+        isGecko2 = isGecko && check(/rv:1\.8/),
+        isGecko3 = isGecko && check(/rv:1\.9/),
+        isBorderBox = isIE && !isStrict,
+        isWindows = check(/windows|win32/),
+        isMac = check(/macintosh|mac os x/),
+        isAir = check(/adobeair/),
+        isLinux = check(/linux/),
+        isSecure = /^https/i.test(window.location.protocol);
+
+    // remove css image flicker
+    if(isIE6){
+        try{
+            DOC.execCommand("BackgroundImageCache", false, true);
+        }catch(e){}
+    }
+
+    Ext.apply(Ext, {
+        /**
+         * URL to a blank file used by Ext when in secure mode for iframe src and onReady src to prevent
+         * the IE insecure content warning (<tt>'about:blank'</tt>, except for IE in secure mode, which is <tt>'javascript:""'</tt>).
+         * @type String
+         */
+        SSL_SECURE_URL : isSecure && isIE ? 'javascript:""' : 'about:blank',
+        /**
+         * True if the browser is in strict (standards-compliant) mode, as opposed to quirks mode
+         * @type Boolean
+         */
+        isStrict : isStrict,
+        /**
+         * True if the page is running over SSL
+         * @type Boolean
+         */
+        isSecure : isSecure,
+        /**
+         * True when the document is fully initialized and ready for action
+         * @type Boolean
+         */
+        isReady : false,
+
+        /**
+         * True if the {@link Ext.Fx} Class is available
+         * @type Boolean
+         * @property enableFx
+         */
+
+        /**
+         * True to automatically uncache orphaned Ext.Elements periodically (defaults to true)
+         * @type Boolean
+         */
+        enableGarbageCollector : true,
+
+        /**
+         * True to automatically purge event listeners during garbageCollection (defaults to false).
+         * @type Boolean
+         */
+        enableListenerCollection : false,
+
+        /**
+         * EXPERIMENTAL - True to cascade listener removal to child elements when an element is removed.
+         * Currently not optimized for performance.
+         * @type Boolean
+         */
+        enableNestedListenerRemoval : false,
+
+        /**
+         * Indicates whether to use native browser parsing for JSON methods.
+         * This option is ignored if the browser does not support native JSON methods.
+         * <b>Note: Native JSON methods will not work with objects that have functions.
+         * Also, property names must be quoted, otherwise the data will not parse.</b> (Defaults to false)
+         * @type Boolean
+         */
+        USE_NATIVE_JSON : false,
+
+        /**
+         * Copies all the properties of config to obj if they don't already exist.
+         * @param {Object} obj The receiver of the properties
+         * @param {Object} config The source of the properties
+         * @return {Object} returns obj
+         */
+        applyIf : function(o, c){
+            if(o){
+                for(var p in c){
+                    if(!Ext.isDefined(o[p])){
+                        o[p] = c[p];
+                    }
+                }
+            }
+            return o;
+        },
+
+        /**
+         * Generates unique ids. If the element already has an id, it is unchanged
+         * @param {Mixed} el (optional) The element to generate an id for
+         * @param {String} prefix (optional) Id prefix (defaults "ext-gen")
+         * @return {String} The generated Id.
+         */
+        id : function(el, prefix){
+            el = Ext.getDom(el, true) || {};
+            if (!el.id) {
+                el.id = (prefix || "ext-gen") + (++idSeed);
+            }
+            return el.id;
+        },
+
+        /**
+         * <p>Extends one class to create a subclass and optionally overrides members with the passed literal. This method
+         * also adds the function "override()" to the subclass that can be used to override members of the class.</p>
+         * For example, to create a subclass of Ext GridPanel:
+         * <pre><code>
+MyGridPanel = Ext.extend(Ext.grid.GridPanel, {
+    constructor: function(config) {
+
+//      Create configuration for this Grid.
+        var store = new Ext.data.Store({...});
+        var colModel = new Ext.grid.ColumnModel({...});
+
+//      Create a new config object containing our computed properties
+//      *plus* whatever was in the config parameter.
+        config = Ext.apply({
+            store: store,
+            colModel: colModel
+        }, config);
+
+        MyGridPanel.superclass.constructor.call(this, config);
+
+//      Your postprocessing here
+    },
+
+    yourMethod: function() {
+        // etc.
+    }
+});
+</code></pre>
+         *
+         * <p>This function also supports a 3-argument call in which the subclass's constructor is
+         * passed as an argument. In this form, the parameters are as follows:</p>
+         * <div class="mdetail-params"><ul>
+         * <li><code>subclass</code> : Function <div class="sub-desc">The subclass constructor.</div></li>
+         * <li><code>superclass</code> : Function <div class="sub-desc">The constructor of class being extended</div></li>
+         * <li><code>overrides</code> : Object <div class="sub-desc">A literal with members which are copied into the subclass's
+         * prototype, and are therefore shared among all instances of the new class.</div></li>
+         * </ul></div>
+         *
+         * @param {Function} superclass The constructor of class being extended.
+         * @param {Object} overrides <p>A literal with members which are copied into the subclass's
+         * prototype, and are therefore shared between all instances of the new class.</p>
+         * <p>This may contain a special member named <tt><b>constructor</b></tt>. This is used
+         * to define the constructor of the new class, and is returned. If this property is
+         * <i>not</i> specified, a constructor is generated and returned which just calls the
+         * superclass's constructor passing on its parameters.</p>
+         * <p><b>It is essential that you call the superclass constructor in any provided constructor. See example code.</b></p>
+         * @return {Function} The subclass constructor from the <code>overrides</code> parameter, or a generated one if not provided.
+         */
+        extend : function(){
+            // inline overrides
+            var io = function(o){
+                for(var m in o){
+                    this[m] = o[m];
+                }
+            };
+            var oc = Object.prototype.constructor;
+
+            return function(sb, sp, overrides){
+                if(typeof sp == 'object'){
+                    overrides = sp;
+                    sp = sb;
+                    sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
+                }
+                var F = function(){},
+                    sbp,
+                    spp = sp.prototype;
+
+                F.prototype = spp;
+                sbp = sb.prototype = new F();
+                sbp.constructor=sb;
+                sb.superclass=spp;
+                if(spp.constructor == oc){
+                    spp.constructor=sp;
+                }
+                sb.override = function(o){
+                    Ext.override(sb, o);
+                };
+                sbp.superclass = sbp.supr = (function(){
+                    return spp;
+                });
+                sbp.override = io;
+                Ext.override(sb, overrides);
+                sb.extend = function(o){return Ext.extend(sb, o);};
+                return sb;
+            };
+        }(),
+
+        /**
+         * Adds a list of functions to the prototype of an existing class, overwriting any existing methods with the same name.
+         * Usage:<pre><code>
+Ext.override(MyClass, {
+    newMethod1: function(){
+        // etc.
+    },
+    newMethod2: function(foo){
+        // etc.
+    }
+});
+</code></pre>
+         * @param {Object} origclass The class to override
+         * @param {Object} overrides The list of functions to add to origClass.  This should be specified as an object literal
+         * containing one or more methods.
+         * @method override
+         */
+        override : function(origclass, overrides){
+            if(overrides){
+                var p = origclass.prototype;
+                Ext.apply(p, overrides);
+                if(Ext.isIE && overrides.hasOwnProperty('toString')){
+                    p.toString = overrides.toString;
+                }
+            }
+        },
+
+        /**
+         * Creates namespaces to be used for scoping variables and classes so that they are not global.
+         * Specifying the last node of a namespace implicitly creates all other nodes. Usage:
+         * <pre><code>
+Ext.namespace('Company', 'Company.data');
+Ext.namespace('Company.data'); // equivalent and preferable to above syntax
+Company.Widget = function() { ... }
+Company.data.CustomStore = function(config) { ... }
+</code></pre>
+         * @param {String} namespace1
+         * @param {String} namespace2
+         * @param {String} etc
+         * @return {Object} The namespace object. (If multiple arguments are passed, this will be the last namespace created)
+         * @method namespace
+         */
+        namespace : function(){
+            var o, d;
+            Ext.each(arguments, function(v) {
+                d = v.split(".");
+                o = window[d[0]] = window[d[0]] || {};
+                Ext.each(d.slice(1), function(v2){
+                    o = o[v2] = o[v2] || {};
+                });
+            });
+            return o;
+        },
+
+        /**
+         * Takes an object and converts it to an encoded URL. e.g. Ext.urlEncode({foo: 1, bar: 2}); would return "foo=1&bar=2".  Optionally, property values can be arrays, instead of keys and the resulting string that's returned will contain a name/value pair for each array value.
+         * @param {Object} o
+         * @param {String} pre (optional) A prefix to add to the url encoded string
+         * @return {String}
+         */
+        urlEncode : function(o, pre){
+            var empty,
+                buf = [],
+                e = encodeURIComponent;
+
+            Ext.iterate(o, function(key, item){
+                empty = Ext.isEmpty(item);
+                Ext.each(empty ? key : item, function(val){
+                    buf.push('&', e(key), '=', (!Ext.isEmpty(val) && (val != key || !empty)) ? (Ext.isDate(val) ? Ext.encode(val).replace(/"/g, '') : e(val)) : '');
+                });
+            });
+            if(!pre){
+                buf.shift();
+                pre = '';
+            }
+            return pre + buf.join('');
+        },
+
+        /**
+         * Takes an encoded URL and and converts it to an object. Example: <pre><code>
+Ext.urlDecode("foo=1&bar=2"); // returns {foo: "1", bar: "2"}
+Ext.urlDecode("foo=1&bar=2&bar=3&bar=4", false); // returns {foo: "1", bar: ["2", "3", "4"]}
+</code></pre>
+         * @param {String} string
+         * @param {Boolean} overwrite (optional) Items of the same name will overwrite previous values instead of creating an an array (Defaults to false).
+         * @return {Object} A literal with members
+         */
+        urlDecode : function(string, overwrite){
+            if(Ext.isEmpty(string)){
+                return {};
+            }
+            var obj = {},
+                pairs = string.split('&'),
+                d = decodeURIComponent,
+                name,
+                value;
+            Ext.each(pairs, function(pair) {
+                pair = pair.split('=');
+                name = d(pair[0]);
+                value = d(pair[1]);