Author: taylor
Date: Sat Feb 13 01:59:51 2010
New Revision: 909693

URL: http://svn.apache.org/viewvc?rev=909693&view=rev
Log:
first commit of resize and focus management in jetui pipeline
- added a new PTitleActive style for the active (selected) portlet window
- a resize tool is added to all detached portlets (resize currently not 
supported in grid portlets)
- implemented z-ordering handling for focus management to handle on clicks and 
related window selections
this commit does not complete the feature, most notably persisting window 
height and width not implemented in this commit

Modified:
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/blue-gradient/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient-noborder/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/styles.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/jetui.jsp
 Sat Feb 13 01:59:51 2010
@@ -338,6 +338,5 @@
     </div>
   </div>
 </div>
-
 </body>
 </html>

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/blue-gradient/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/blue-gradient/css/styles.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/blue-gradient/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/blue-gradient/css/styles.css
 Sat Feb 13 01:59:51 2010
@@ -32,10 +32,21 @@
     border-left: 1px solid #517B94;
     border-right: 1px solid #517B94;
     border-top: 1px solid #517B94;
-    color: #01375D;    
-    
+    color: #01375D;        
     background-image: url(../images/grad2blue.png);
 }
+.blue-gradient .PTitleActive
+{
+    padding-left:2px;
+    padding-top: 2px;
+    padding-bottom: 16px;
+    padding-right: 2px; 
+    border-left: 1px solid #517B94;
+    border-right: 1px solid #517B94;
+    border-top: 1px solid #517B94;
+    background: #01375D;
+    color: #ffffff;        
+}
 
 .blue-gradient .PTitleContent
 {   

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient-noborder/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient-noborder/css/styles.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient-noborder/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient-noborder/css/styles.css
 Sat Feb 13 01:59:51 2010
@@ -29,10 +29,25 @@
     padding-top: 2px;
     padding-bottom: 16px;
     padding-right: 2px; 
-    color: #01375D;
-    
+    color: #01375D;    
     background-image: url(../images/grad2gray.png);    
 }
+.gray-gradient-noborder .PTitle
+{
+    padding-top: 2px;
+    padding-bottom: 16px;
+    padding-right: 2px; 
+    color: #01375D;    
+    background-image: url(../images/grad2gray.png);    
+}
+.gray-gradient-noborder .PTitleActive
+{
+    padding-top: 2px;
+    padding-bottom: 16px;
+    padding-right: 2px;
+    color: #ffffff; 
+    background: #01375D;    
+}
 
 .gray-gradient-noborder .PTitleContent
 {

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient/css/styles.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/gray-gradient/css/styles.css
 Sat Feb 13 01:59:51 2010
@@ -42,7 +42,18 @@
     background-image: url(../images/grad2gray.png);  
   
 }
-
+.gray-gradient .PTitleActive
+{
+    padding-left:2px;
+    padding-top: 2px;
+    padding-bottom: 16px;
+    padding-right: 2px; 
+    border-left: 1px solid #999999;
+    border-right: 1px solid #999999;
+    border-top: 1px solid #999999;
+    color: #ffffff;
+    background: #01375D;   
+}
 .gray-gradient .PTitleContent
 {
     font-weight:bold;

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/styles.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/greenearth/css/styles.css
 Sat Feb 13 01:59:51 2010
@@ -22,6 +22,7 @@
 /* font */
 .greenearth .PTitleLeft,
 .greenearth .PTitle,
+.greenearth .PTitleActive,
 .greenearth .PTitleContent,
 .greenearth .PTitleRight,
 .greenearth .PContentLeft,
@@ -52,6 +53,18 @@
     height:5px;
 }
 
+.greenearth .PTitleActive
+{
+    padding-bottom: 16px;
+    color: #363738;
+    background: #79B400;
+    border-right:1px solid #b4b4b4;
+    border-left:1px solid #b4b4b4;
+    border-top:1px solid #b4b4b4;
+/*    border-bottom:1px solid #b4b4b4;*/
+    height:5px;
+}
+
 .greenearth .PTitleContent
 {
     font-weight: bold;

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/styles.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/jetspeed/css/styles.css
 Sat Feb 13 01:59:51 2010
@@ -22,6 +22,7 @@
 /* font */
 .jetspeed .PTitleLeft,
 .jetspeed .PTitle,
+.jetspeed .PTitleActive,
 .jetspeed .PTitleContent,
 .jetspeed .PTitleRight,
 .jetspeed .PContentLeft,
@@ -52,6 +53,20 @@
     height:5px;
 }
 
+.jetspeed .PTitleActive
+{
+    padding-bottom: 16px;
+    color: #ffffff;
+    background: #05549C;
+    border-right:1px solid #b4b4b4;
+    border-left:1px solid #b4b4b4;
+    border-top:1px solid #b4b4b4;
+/*    border-bottom:1px solid #b4b4b4;*/
+    height:5px;
+}
+
+
+
 .jetspeed .PTitleContent
 {
     font-weight: bold;

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/styles.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/purpleplanet/css/styles.css
 Sat Feb 13 01:59:51 2010
@@ -22,6 +22,7 @@
 /* font */
 .purpleplanet .PTitleLeft,
 .purpleplanet .PTitle,
+.purpleplanet .PTitleActive,
 .purpleplanet .PTitleContent,
 .purpleplanet .PTitleRight,
 .purpleplanet .PContentLeft,
@@ -51,6 +52,17 @@
 /*    border-bottom:1px solid #b4b4b4;*/
     height:5px;
 }
+.purpleplanet .PTitleActive
+{
+    padding-bottom: 16px;
+    color: #ffffff;
+    background:#32004b;
+    border-right:1px solid #b4b4b4;
+    border-left:1px solid #b4b4b4;
+    border-top:1px solid #b4b4b4;
+/*    border-bottom:1px solid #b4b4b4;*/
+    height:5px;
+}
 
 .purpleplanet .PTitleContent
 {

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/styles.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/styles.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/styles.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/portlet/turbo/css/styles.css
 Sat Feb 13 01:59:51 2010
@@ -22,6 +22,7 @@
 /* font */
 .turbo .PTitleLeft,
 .turbo .PTitle,
+.turbo .PTitleActive,
 .turbo .PTitleContent,
 .turbo .PTitleRight,
 .turbo .PContentLeft,
@@ -51,6 +52,17 @@
 /*    border-bottom:1px solid #b4b4b4;*/
     height:5px;
 }
+.turbo .PTitleActive
+{
+    padding-bottom: 16px;
+    color: #ffffff;
+    background:#193B53;
+    border-right:1px solid #b4b4b4;
+    border-left:1px solid #b4b4b4;
+    border-top:1px solid #b4b4b4;
+/*    border-bottom:1px solid #b4b4b4;*/
+    height:5px;
+}
 
 .turbo .PTitleContent
 {

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetui/jetui-portal.js
 Sat Feb 13 01:59:51 2010
@@ -141,6 +141,11 @@
         lastX : 0,
         
         /**
+         * Active window selected
+         */
+        activeWindow : null,
+        
+        /**
          * Construction logic executed during instantiation.
          *
          * @method initializer
@@ -204,7 +209,7 @@
         /**
          * Updates toolbar state
          * 
-         * @method updateToolbar
+         * @method up`dateToolbar
          */        
         updateToolbar : function(toolbar, state) {
             var portal = JETUI_YUI.getPortalInstance();                
@@ -266,10 +271,10 @@
                 groups: ['grid']            
                 });
             }
-            // BOZO: im manipulating internal DD structures, should find a way 
to detach the handler
             var i = 0;
             while (i < Y.DD.DDM.targets.length) {
                 if (Y.DD.DDM.targets[i] == e.drop) {
+                       Y.log("found it!");
                     Y.DD.DDM.targets.splice(i, 1);
                     break;
                 }
@@ -278,7 +283,7 @@
             // I don't think this is working
             e.drop.unplug(Y.Plugin.Drop);
         },
- 
+        
         /**
          * @method moveToGrid moves a portlet window to another grid position 
in the browser
          * this is a client side only operation. Operates in grid 
(non-detached) mode.
@@ -389,6 +394,7 @@
                                        }
                                }
                    }
+                   portal.addResizeHandle(window);
                        var uri = portal.portalContextPath + 
"/services/pagelayout/fragment/" + windowId + "/pos/?_type=json";
                        uri += "&x=" + x + "&y=" + y + "&layout=detach";
                        var config = {
@@ -397,7 +403,8 @@
                       headers: { "X-Portal-Path" : portal.portalPagePath },
                       arguments: { complete: [ windowId ] }
                   };
-                       var request = Y.io(uri, config);                        
+                       var request = Y.io(uri, config); 
+                       portal.activateWindow(window);
             }            
         },
 
@@ -462,6 +469,8 @@
                        i++;
                    }
                    layout.appendChild(window);
+                   portal.removeResizeHandle(window);
+                   portal.removeWidthHeight(window);
                    var uri = portal.portalContextPath + 
"/services/pagelayout/fragment/" + windowId + "/pos/?_type=json";
                    uri += "&row=" + row + "&col=" + col + "&layout=attach";
                    var config = {
@@ -739,9 +748,164 @@
             
             var uri = portal.portalContextPath + "/portlet" + 
portal.portalPagePath + "?entity=" + fragment.id;
             var request = Y.io(uri, { on: { complete: 
portal.onPortletRenderComplete }, arguments: { complete: v } } );
+        },
+
+        /**
+         * @method addResizeHandle
+         */        
+        addResizeHandle : function(v) {
+            var portal = JETUI_YUI.getPortalInstance();                
+               var region = v.get('region');           
+               var mt = portal.calculateResizeMargin(v);
+               var rh = Y.Node.create("<div class='resizeHandle'/>");
+               rh.setStyle('position', 'absolute');
+                       rh.setStyle('top', (region.bottom - region.top - mt) + 
"px");
+                       rh.setStyle('left', (region.right - region.left - mt) + 
"px");                                          
+               v.appendChild(rh);                      
+               rh.data = 'resize';
+               var rhDrag = new Y.DD.Drag({
+                   node: rh,
+                   groups: [],
+                   dragMode: 'point'                    
+               }).plug(Y.Plugin.DDProxy, { 
+                        moveOnEnd: false                       
+               });    
+               rhDrag.addHandle('.resizeHandle');                              
        
+        },
+
+        /**
+         * @method removeResizeHandle
+         */        
+        removeResizeHandle : function(v) {
+                       v.get('children').each(function(v2,k2) {
+                               var cl = v2.getAttribute('class');
+                           if (cl.indexOf('resizeHandle') == 0) {
+                               v2.remove();
+                               return;
+                           }
+                       });             
+        },
+
+        removeWidthHeight : function(v) {
+                       v.get('children').each(function(v2,k2) {
+                               var cl = v2.getAttribute('class');
+                           if (cl.indexOf('portlet') == 0) {
+                                       v2.get('children').each(function(v3,k3) 
{
+                                               var cl = 
v3.getAttribute('class');
+                                           if (cl.indexOf('PContentBorder') == 
0) {
+                                               v3.setStyle('width', '');
+                                               v3.setStyle('height', '');
+                                                       
v3.get('children').each(function(v4,k4) {
+                                                               var cl = 
v4.getAttribute('class');
+                                                           if 
(cl.indexOf('PContent') == 0) {
+                                                               
v4.setStyle('width', '');
+                                                               
v4.setStyle('height', '');
+                                                           }
+                                                       });
+                                           }
+                                       });
+                           }
+                       });                             
+        },
+        
+        /**
+         * @method calculateResizeMargin
+         */                    
+        calculateResizeMargin : function(v) {
+               var mtt = null;
+                       v.get('children').each(function(v2,k2) {
+                               var cl = v2.getAttribute('class');
+                           if (cl.indexOf('portlet') == 0) {                   
                
+                               mtt = v2.getComputedStyle('marginTop'); // 
TODO: margin-top could be different from other 3 margins
+                               if (!Y.Lang.isNull(mtt)) {
+                                       mtt = parseInt(mtt);
+                               }
+                               return;
+                           }
+                       });
+               var mt = (mtt*2) + 7; // 7 is approx the diameter of the handle 
image
+               return mt;
+        },
+        
+        /**
+         * @method find Child By Class
+         */
+        findChildByClass : function(node, styles, index) {
+               var portal = JETUI_YUI.getPortalInstance();
+               var result = null;
+                       node.get('children').each(function(v,k) {
+                                var cl = v.getAttribute('class');
+                            if (cl.indexOf(styles[index]) == 0) {
+                                if (index + 1 < styles.length) {
+                                        index = index + 1;
+                                        var res = portal.findChildByClass(v, 
styles, 1);
+                            if (!Y.Lang.isNull(res)) {
+                                result =  res;
+                                return result;
+                            }
+                                }
+                                else {
+                        result =  v;
+                                        return result;
+                                }
+                            }
+                       });             
+                       return result;
+        },
+        
+        activateWindow : function(active) {
+            var portal = JETUI_YUI.getPortalInstance();                
+            if (!Y.Lang.isNull(portal.activeWindow) && portal.activeWindow == 
active) {
+               return; // clicking on active window, do nothing
+            }
+               active.setStyle('zIndex', portal.calculateNextZIndex());
+               Y.log("current target = " + active);
+            var title = portal.findChildByClass(active, ['portlet ', 
'PTitle'], 0);
+            if (!Y.Lang.isNull(title)) {
+               //var unselect = title.getComputedStyle('background'); // this 
deadended for me, was not working
+               title.setAttribute('class', 'PTitleActive');
+               var drag = Y.DD.DDM.getDrag(active);
+               drag.removeHandle(".PTitle");           
+               drag.addHandle(".PTitleActive");
+                if (!Y.Lang.isNull(portal.activeWindow)) {
+                       var title = 
portal.findChildByClass(portal.activeWindow, ['portlet ', 'PTitleActive'], 0);
+                    if (!Y.Lang.isNull(title)) {                            
+                       var drag = Y.DD.DDM.getDrag(portal.activeWindow);
+                       drag.removeHandle(".PTitleActive");             
+                       drag.addHandle(".PTitle");
+                       title.setAttribute('class', 'PTitle');
+                     }
+                 }
+            }
+               portal.activeWindow = active;                                   
        
+        },
+        
+        /**
+         * @method calculateNextZIndex
+         */                    
+        calculateNextZIndex : function() {
+               var next = 10;
+               var draggablePortlets = 
Y.Node.all(JetuiConfiguration.portletStyle);    
+            draggablePortlets.each(function(v, k) {
+               if (v.getAttribute("id") != "jsPortletTemplate")
+               {
+                       var portlet = v.data;
+                       if (portlet.get("detached") == true) {
+                               var zi = v.getStyle('zIndex');
+                           if (!Y.Lang.isNull(zi)) {
+                               var zi = parseInt(zi);
+                               if (zi > next) {
+                                       next = zi;
+                               }                                       
+                           }
+
+                       }
+               }
+            });                
+            return next + 1;
         }
     });
-    
+
     /**
      * Create a portlet window to represent a portal window.
      *

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/css/portal.css
 Sat Feb 13 01:59:51 2010
@@ -32,7 +32,14 @@
        z-index: 100;
        width: 192px;
 }
-.PTitle
+.PTitle, .PTitleActive
 {
    cursor: move;
 }
+.resizeHandle {
+    background:transparent url("/jetspeed/jetui/css/layout_sprite.png") 
no-repeat -20px -60px;
+       height:14px;
+    width: 14px;
+    cursor: move;    
+}
+

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js?rev=909693&r1=909692&r2=909693&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/jetui/engine/portal.js
 Sat Feb 13 01:59:51 2010
@@ -1,5 +1,5 @@
 //Use loader to grab the modules needed
-YUI(JETUI_YUI).use('jetui-portal', 'console', 'dd', 'io', 'datatype-xml', 
'dataschema-xml', 'dataschema-json', 'node', 'node-menunav', function(Y) {
+YUI(JETUI_YUI).use('jetui-portal', 'console', 'dd', 'io', 'datatype-xml', 
'dataschema-xml', 'dataschema-json', 'node', 'dom-style', function(Y) {
 
     var portal = JETUI_YUI.getPortalInstance();
        var config = JETUI_YUI.config;
@@ -21,9 +21,9 @@
        var nodelist = portal.jstbRight.get('children');
        nodelist.setStyle('display', currentStyle);          
        }
-    var onClickToolbar = function(e) {
-//     Y.log("clickd on e.target = " + e.target);
-//     nav.setStyle('z-index', '500');
+    var onClickPortlet = function(e) {
+        var portal = JETUI_YUI.getPortalInstance();
+        portal.activateWindow(e.currentTarget);        
     }
 
     var onClickToggler = function(e) {
@@ -80,6 +80,7 @@
                        dragGroups = ['detached'],              
                        dragMode = 'point';
                        dropGroups = [];
+                       portal.addResizeHandle(v);
                }
                if (portlet.get("tool") == false)
                {
@@ -95,8 +96,9 @@
                            node: v,
                            groups: dropGroups            
                        });
-               }
-               // portlet.info();
+               }               
+               v.on('click', onClickPortlet);                  
+               // portlet.info();
        }
     });
     
@@ -169,6 +171,16 @@
         if (drag.target) {
             drag.target.set('locked', false);
         }
+        var srcNode = drag.get('node');
+        if (srcNode.data == 'resize') {
+               var dragParent = srcNode.get('parentNode');
+               var region = dragParent.get('region');
+               var mt = portal.calculateResizeMargin(dragParent);
+               srcNode.setStyle('top', (region.bottom - region.top - mt) + 
"px");
+                       srcNode.setStyle('left', (region.right - region.left - 
mt) + "px");                                             
+               srcNode.setStyle('visibility', '');             
+               return;
+        }
         if (drag.get('node').data.get("detached"))
         {
             drag.get('node').setStyle('visibility', '');               
@@ -185,14 +197,25 @@
     });                
     
     Y.DD.DDM.on('drag:start', function(e) {
-        var drag = e.target;
+        var portal = JETUI_YUI.getPortalInstance();
+       var drag = e.target;
         var dragNode = drag.get('dragNode');
         var srcNode = drag.get('node');
+        if (srcNode.data == 'resize') {
+               dragNode.set('innerHTML', srcNode.get('innerHTML'));
+               srcNode.setStyle('visibility', 'hidden');
+            var dragParent = srcNode.get('parentNode');                
+            portal.activateWindow(dragParent);                                 
        
+               return;
+       }
+        portal.activateWindow(srcNode);                                        
        
+        
         dragNode.set('innerHTML', srcNode.get('innerHTML'));
 
         if (drag.get('node').data.get("detached"))
         {
-               drag.get('node').setStyle('visibility', 'hidden');              
+               drag.get('node').setStyle('visibility', 'hidden');
+            portal.activateWindow(srcNode);                    
         }
         else
         {
@@ -204,6 +227,29 @@
         portal.lastY = drag.mouseXY[1];
     });
 
+    Y.DD.DDM.on('drag:drag', function(e) {
+       var drag = e.target;
+        var srcNode = drag.get('node');        
+        if (srcNode.data == 'resize') {
+               var dragParent = drag.get('node').get('parentNode');
+               var box = portal.findChildByClass(dragParent, ['portlet ', 
'PContentBorder'], 0);
+               var content = portal.findChildByClass(box, ['PContent'], 0);    
        
+               var left = parseInt(dragParent.getStyle('left'));
+               var top =  parseInt(dragParent.getStyle('top'));
+               var width = (drag.mouseXY[0] - left) + "px";
+               var height = (drag.mouseXY[1] - top) + "px";
+               if (!Y.Lang.isNull(box)) {
+                       box.setStyle('width', width);
+                       box.setStyle('height', height);
+               }               
+               if (!Y.Lang.isNull(content)) {
+                       content.setStyle('width', (drag.mouseXY[0] - left - 4) 
+ "px"); // TODO: calculate padding, border (4)
+                       content.setStyle('height', height );
+               }               
+               var region = dragParent.get('region');
+        }
+    });
+    
     Y.DD.DDM.on('drag:over', function(e) {
         var portal = JETUI_YUI.getPortalInstance();
        if (portal.isMoving)



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to