You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2006/03/24 05:50:34 UTC

svn commit: r388368 - in /portals/jetspeed-2/trunk/src/webapp: desktop-themes/blue/ desktop-themes/blue/images/ javascript/desktop/widget/ javascript/desktop/windowicons/ javascript/desktop/windowthemes/theme1/ javascript/desktop/windowthemes/theme2/ j...

Author: taylor
Date: Thu Mar 23 20:50:31 2006
New Revision: 388368

URL: http://svn.apache.org/viewcvs?rev=388368&view=rev
Log:
http://issues.apache.org/jira/browse/JS2-514

continued contributions on desktop, portlet themes from Steve Milek
render url support

Added:
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.css
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.html
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBar.css
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBarItemTemplate.html
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortalTaskBar.js
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/test-div-size.html
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-28.jpg   (with props)
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-endcap-28.jpg   (with props)
Removed:
    portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/images/Thumbs.db
Modified:
    portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.jsp
    portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.vm
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme1/theme1.css
    portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme2/theme2.css
    portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/jetspeed-ajax-api.js

Modified: portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.jsp
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.jsp?rev=388368&r1=388367&r2=388368&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.jsp (original)
+++ portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.jsp Thu Mar 23 20:50:31 2006
@@ -26,9 +26,9 @@
     var djConfig = {isDebug: true};
     djConfig.debugAtAllCosts = true;     <!-- needed for js debuggers (both venkman and visual studio) -->
 
-	function doRender(url) 
+	function doRender(url,portletEntityId)
 	{
-		alert(url);
+        jetspeed.doRender(url,portletEntityId);
 	}
 	    
 </script>
@@ -42,11 +42,20 @@
     dojo.require("dojo.dnd.HtmlDragSource");
     dojo.require("dojo.event.*");    
     dojo.require("dojo.io");
+    dojo.require("dojo.widget.Manager");
     dojo.require("dojo.widget.TaskBar");
     dojo.require("dojo.widget.FloatingPane");
+    dojo.require("dojo.fx.*");
+
+    dojo.hostenv.setModulePrefix('jetspeed.ui.widget', '../desktop/widget');
+
+    dojo.require("jetspeed.ui.widget.PortalTaskBar");
+
     dojo.hostenv.writeIncludes();    
 </script>
-
+<script language="JavaScript" type="text/javascript">
+    dojo.widget.manager.registerWidgetPackage('jetspeed.ui.widget');
+</script>
 <!-- 
   Jetspeed Script
   -->
@@ -55,7 +64,7 @@
 <script language="JavaScript" type="text/javascript">
     function init()
     {
-        jetspeed.testLoadPageCreateWidgetPortlets()
+        jetspeed.initializeDesktop();
     }
     dojo.event.connect(dojo, "loaded", "init");
 </script>
@@ -122,10 +131,10 @@
 <body id="jetspeedDesktop">
 
 <!-- Start Taskbar -->
-<div dojoType="TaskBar" id="jetspeedTaskbar" style="background-color: #666; width: 100%; bottom: 5px; height: 100px">
+<!-- <div dojoType="TaskBar" id="jetspeedTaskbar" style="background-color: #666; width: 100%; bottom: 5px; height: 100px"> -->
     <!-- <button onclick="jetspeed.testLoadPageCreateDivPortlets()">Portal (DIV)</button>
     <button onclick="jetspeed.testLoadPageCreateWidgetPortlets()">Portal (WIDGET)</button> -->
-</div>
+<!-- </div> -->
 <!-- End Taskbar -->
 
 </body>

Modified: portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.vm
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.vm?rev=388368&r1=388367&r2=388368&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.vm (original)
+++ portals/jetspeed-2/trunk/src/webapp/desktop-themes/blue/blue.vm Thu Mar 23 20:50:31 2006
@@ -21,9 +21,9 @@
     var djConfig = {isDebug: true};
     djConfig.debugAtAllCosts = true;   <!-- needed for js debuggers (both venkman and visual studio) -->
 
-	    function doRender(url) 
+	    function doRender(url,portletEntityId) 
 	    {
-        		alert(url);
+            jetspeed.doRender(url,portletEntityId);
     	}
 
 </script>
@@ -37,11 +37,20 @@
     dojo.require("dojo.dnd.HtmlDragSource");
     dojo.require("dojo.event.*");    
     dojo.require("dojo.io");
+    dojo.require("dojo.widget.Manager");
     dojo.require("dojo.widget.TaskBar");
  	dojo.require("dojo.widget.FloatingPane");
-    dojo.hostenv.writeIncludes();    
-</script>
+    dojo.require("dojo.fx.*");
+
+    dojo.hostenv.setModulePrefix('jetspeed.ui.widget', '../desktop/widget');
+
+    dojo.require("jetspeed.ui.widget.PortalTaskBar");
 
+    dojo.hostenv.writeIncludes();
+</script>
+<script language="JavaScript" type="text/javascript">
+    dojo.widget.manager.registerWidgetPackage('jetspeed.ui.widget');
+</script>
 <!-- 
   Jetspeed Script
   -->
@@ -50,7 +59,7 @@
 <script language="JavaScript" type="text/javascript">
     function init()
     {
-        jetspeed.testLoadPageCreateWidgetPortlets()
+        jetspeed.initializeDesktop();
     }
     dojo.event.connect(dojo, "loaded", "init");
 </script>
@@ -117,10 +126,10 @@
 <body id="jetspeedDesktop">
 
 <!-- Start Taskbar -->
-<div dojoType="TaskBar" id="jetspeedTaskbar" style="background-color: #666; width: 100%; bottom: 5px; height: 100px">
+<!-- <div dojoType="TaskBar" id="jetspeedTaskbar" style="background-color: #666; width: 100%; bottom: 5px; height: 100px"> -->
     <!-- <button onclick="jetspeed.testLoadPageCreateDivPortlets()">Portal (DIV)</button>
     <button onclick="jetspeed.testLoadPageCreateWidgetPortlets()">Portal (WIDGET)</button> -->
-</div>
+<!-- </div> -->
 <!-- End Taskbar -->
 
 </body>

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.css
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.css?rev=388368&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.css (added)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.css Thu Mar 23 20:50:31 2006
@@ -0,0 +1,101 @@
+
+.dojoFloatingPaneInDrag { 
+    border: 3px solid;
+
+}
+
+.dojoFloatingPane {
+	/* essential css */
+	position: absolute;
+	overflow: hidden;		/* so drop shadow is displayed */
+	z-index: 5;
+	-moz-box-sizing: border-box;
+	-khtml-box-sizing: border-box;
+	
+	/* styling css */
+	border: 1px solid;
+	border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+	background-color: ThreeDFace;
+}
+
+.dojoFloatingPaneTitleBar {
+	/* essential css */
+	z-index: 2;
+	position: absolute;
+	top: 0px;
+	left: 0px;
+	width: 100%;
+    overflow: hidden;
+
+	/* styling css */
+	vertical-align: middle;
+	height: 22px;
+	color: CaptionText;
+	font: small-caption;
+	background-color: #7596c6;
+	cursor: default;
+}
+.dojoFloatingPaneTitleText {
+	padding: 2px 4px 2px 2px;
+    float:left;
+}
+
+.dojoTitleBarIcon { 
+    float: left;
+    vertical-align: middle;
+}
+
+/* minimize/maximize icons are specified by CSS only */
+.dojoFloatingPaneMinimizeIcon,
+.dojoFloatingPaneMaximizeIcon,
+.dojoFloatingPaneRestoreIcon,
+.dojoFloatingPaneCloseIcon {
+	vertical-align: middle;
+	height: 22px;
+	width: 22px;
+	float: right;
+}
+.dojoFloatingPaneMinimizeIcon {
+	background-image: url(images/floatingPaneMinimize.gif);
+}
+.dojoFloatingPaneMaximizeIcon {
+	background-image: url(images/floatingPaneMaximize.gif);
+}
+.dojoFloatingPaneRestoreIcon {
+	background-image: url(images/floatingPaneRestore.gif);
+}
+.dojoFloatingPaneCloseIcon {
+	background-image: url(images/floatingPaneClose.gif);
+}
+
+/* bar at bottom of window that holds resize handle */
+.dojoFloatingPaneResizebar {
+	/* essential css */
+	position: absolute;
+	left: 0;
+	bottom: 0;
+	width: 100%;
+	height: 13px;
+	z-index: 2;
+	
+	/* styling css */
+	background-color: ThreeDFace;
+}
+
+/* the part that holds the actual content of the floating pane (text or whatever) */
+.dojoFloatingPaneClient {
+	/* essential css */
+	position: relative;
+	width: 100%;
+	height: 100%;
+	-moz-box-sizing: border-box;
+	-khtml-box-sizing: border-box;
+	z-index: 2;
+	overflow: auto;
+	
+	/* styling css */
+	background-color: ThreeDFace;
+	padding: 8px;
+	font-family: Verdana, Helvetica, Garamond, sans-serif;
+	font-size: 12px;
+}

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.html
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.html?rev=388368&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.html (added)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlFloatingPane.html Thu Mar 23 20:50:31 2006
@@ -0,0 +1,21 @@
+<div id="${this.widgetId}" class="dojoFloatingPane" datasrc="${this.blee}" dojoAttachEvent="onMouseDown">
+	<div dojoAttachPoint="titleBar" class="dojoFloatingPaneTitleBar" style="display:none" dojoAttachEvent="onMouseOver:titleMouseOver;onMouseOut:titleMouseOut">
+        <img dojoAttachPoint="titleBarIcon" src="${this.iconSrc}" class="dojoTitleBarIcon">
+		<div dojoAttachPoint="closeAction" dojoAttachEvent="onClick:closeWindow;onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+   	  		class="dojoFloatingPaneCloseIcon"></div>
+		<div dojoAttachPoint="restoreAction" dojoAttachEvent="onClick:restoreWindow;onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+   	  		class="dojoFloatingPaneRestoreIcon"></div>
+		<div dojoAttachPoint="maximizeAction" dojoAttachEvent="onClick:maximizeWindow;onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+   	  		class="dojoFloatingPaneMaximizeIcon"></div>
+		<div dojoAttachPoint="minimizeAction" dojoAttachEvent="onClick:minimizeWindow;onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+   	  		class="dojoFloatingPaneMinimizeIcon"></div>
+	  	<div dojoAttachPoint="titleBarText" class="dojoFloatingPaneTitleText">${this.title}</div>
+	</div>
+
+	<div dojoAttachPoint="containerNode" class="dojoFloatingPaneClient">
+	</div>
+
+	<div dojoAttachPoint="resizeBar" class="dojoFloatingPaneResizebar">
+	</div>
+
+</div>

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBar.css
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBar.css?rev=388368&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBar.css (added)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBar.css Thu Mar 23 20:50:31 2006
@@ -0,0 +1,73 @@
+
+.classA {
+    background-image: url(../windowicons/blue-metalic-28.jpg);
+    background-repeat: no-repeat;
+	border: outset 2px;
+	display: inline;
+    /*position: fixed;*/
+    /*overflow: visible;*/
+	margin-right: 5px;
+	cursor: pointer;
+	height: 28px;
+	width: 200px;
+	font-size: 8pt;
+	white-space: nowrap;
+	text-align: center;
+}
+.dojoTaskBarItem {
+    background-image: url(../windowicons/blue-metalic-28.jpg);
+    background-repeat: no-repeat;
+	height: 28px;
+	/*width: 200px;*/
+    overflow: hidden;
+    padding-right: 8px;
+	font-size: 9pt;
+    cursor: pointer;
+}
+.portalTaskBarItemEndCap {
+    background-image: url(../windowicons/blue-metalic-endcap-28.jpg);
+    background-repeat: no-repeat;
+    height: 28px;
+	width: 4px;
+}
+.portalTaskBarItemTable {
+    display: inline;
+    padding: 0px;
+    margin: 0px 2px 6px 2px;
+    /*border-spacing: 0;*/  /* could get rid of cellspacing attribute if IE would support CSS2 better */
+}
+
+
+
+/*
+.dojoTaskBarItem {
+    background-image: url(../windoXXXXXXXXXX/blue-metalic-28.jpg);
+    background-repeat: no-repeat;
+	border: outset 2px;
+	display: inline;
+	margin-right: 5px;
+	cursor: pointer;
+	height: 28px;
+	width: 200px;
+	font-size: 8pt;
+	white-space: nowrap;
+	text-align: center;
+}
+*/
+
+.dojoTaskBarItem img {
+	vertical-align: top;
+	margin-right: 5px;
+	margin-left: 5px;
+    margin-top: 1px;
+    padding-top: 0px;
+	height: 16px;
+	width: 16px;
+}
+
+.dojoTaskBarItem a {
+	 color: black;
+	text-decoration: none;
+}
+
+

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBarItemTemplate.html
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBarItemTemplate.html?rev=388368&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBarItemTemplate.html (added)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/HtmlTaskBarItemTemplate.html Thu Mar 23 20:50:31 2006
@@ -0,0 +1 @@
+<table class="portalTaskBarItemTable" cellspacing="0"><tr dojoAttachEvent="onClick"><td class="dojoTaskBarItem"></td><td class="portalTaskBarItemEndCap"></td></tr></table>

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortalTaskBar.js
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortalTaskBar.js?rev=388368&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortalTaskBar.js (added)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/PortalTaskBar.js Thu Mar 23 20:50:31 2006
@@ -0,0 +1,69 @@
+
+dojo.provide("jetspeed.ui.widget.PortalTaskBar");
+dojo.provide("jetspeed.ui.widget.PortalTaskBarItem");
+
+dojo.require("dojo.widget.*");
+dojo.require("dojo.widget.FloatingPane");
+
+jetspeed.ui.widget.PortalTaskBar = function()
+{    
+    this.widgetType = "PortalTaskBar";
+
+    if ( ! this.taskbarProps )
+        this.taskbarProps = {} ;
+
+    dojo.widget.html.FloatingPane.call(this);
+
+    dojo.widget.TaskBar.call(this.taskbarProps);
+
+    this.titleBarDisplay = "none";
+}
+
+dojo.inherits(jetspeed.ui.widget.PortalTaskBar, dojo.widget.html.FloatingPane);
+
+dojo.lang.extend(jetspeed.ui.widget.PortalTaskBar, {
+    addChild: function(child)
+                {
+                    var tbiProps = {windowId: child.widgetId, caption: child.title, iconSrc: child.iconSrc, widgetId: child.widgetId + "_tbi" } ;
+                    dojo.lang.mixin(tbiProps, this.taskbarProps) ;
+                    var tbi = dojo.widget.createWidget("PortalTaskBarItem", tbiProps);
+                    jetspeed.ui.widget.PortalTaskBar.superclass.addChild.call(this,tbi);
+                    //dojo.debug( "PortalTaskBarItem  widgetId=" + tbi.widgetId + " domNode.id=" + tbi.domNode.id + " child.domNode.id=" + child.widgetId ) ;
+                }
+});
+
+jetspeed.ui.widget.PortalTaskBarItem = function(){
+    
+	dojo.widget.html.TaskBarItem(this);
+    
+    this.widgetType = "PortalTaskBarItem";
+}
+dojo.inherits(jetspeed.ui.widget.PortalTaskBarItem, dojo.widget.html.TaskBarItem);
+
+dojo.lang.extend(jetspeed.ui.widget.PortalTaskBarItem, {
+    fillInTemplate: function() {
+        var tdNode = this.domNode.getElementsByTagName( "td" )[0];
+		if ( this.iconSrc != '' ) {
+			var img = document.createElement("img");
+			img.src = this.iconSrc;
+			tdNode.appendChild(img);
+		}
+		tdNode.appendChild(document.createTextNode(this.caption));
+		dojo.html.disableSelection(this.domNode);
+	},
+    onClick: function() {
+        var showWindow = this.window;
+        var btnNode = this.domNode;
+        
+        // simulate button click
+        dojo.fx.html.fade( this.domNode, 100, 1, 0.5, function() { dojo.fx.html.fade( btnNode, 100, 0.5, 1 ); } );
+        
+        if ( this.window.windowState == "minimized" )
+            dojo.fx.html.explode( this.domNode, this.window.domNode, 300, function() { showWindow.show(); } ) ;
+        else
+            this.window.show();
+	}
+});
+
+dojo.widget.tags.addParseTreeHandler("dojo:portaltaskbar");
+dojo.widget.tags.addParseTreeHandler("dojo:portaltaskbaritem");

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/test-div-size.html
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/test-div-size.html?rev=388368&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/test-div-size.html (added)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/widget/test-div-size.html Thu Mar 23 20:50:31 2006
@@ -0,0 +1,58 @@
+<html>
+<head>
+
+<title>Simple Div Demo</title>
+
+<style>
+.classA {
+    background-image: url(../windowicons/blue-metalic-28.jpg);
+    background-repeat: no-repeat;
+	border: outset 2px;
+	display: inline;
+    /*position: fixed;*/
+    /*overflow: visible;*/
+	margin-right: 5px;
+	cursor: pointer;
+	height: 28px;
+	width: 200px;
+	font-size: 8pt;
+	white-space: nowrap;
+	text-align: center;
+}
+.classSize {
+    background-image: url(../windowicons/blue-metalic-28.jpg);
+    background-repeat: no-repeat;
+	height: 28px;
+	width: 200px;
+	font-size: 10pt;
+}
+.classCap {
+    background-image: url(../windowicons/blue-metalic-endcap-28.jpg);
+    background-repeat: no-repeat;
+    height: 28px;
+	width: 4px;
+}
+.classInline {
+    display: inline;
+    border-spacing: 0;
+}
+</style>
+
+</head>
+<body>
+      <!--
+        <span class="classInline1"><table class="classInline"><tr><td class="classSize">Blee</td></tr></table></span>
+        <span class="classInline1"><table class="classInline"><tr><td class="classSize">Blah</td></tr></table></span>
+        <span class="classInline1"><table class="classInline"><tr><td class="classSize">Fred</td></tr></table></span>
+        <span class="classInline1"><table class="classInline"><tr><td class="classSize">Jerry</td></tr></table></span>
+        <span class="classInline1"><table class="classInline"><tr><td class="classSize">Bob</td></tr></table></span>
+        -->
+
+        <table class="classInline"><tr><td class="classSize">Blee</td><td class="classCap"></td></tr></table>
+        <table class="classInline"><tr><td class="classSize">Blah</td><td class="classCap"></td></tr></table>
+        <table class="classInline"><tr><td class="classSize">Fred</td><td class="classCap"></td></tr></table>
+        <table class="classInline"><tr><td class="classSize">Jerry</td><td class="classCap"></td></tr></table>
+        <table class="classInline"><tr><td class="classSize">Bob</td><td class="classCap"></td></tr></table>
+
+</body>
+</html>

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-28.jpg
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-28.jpg?rev=388368&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-28.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-endcap-28.jpg
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-endcap-28.jpg?rev=388368&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowicons/blue-metalic-endcap-28.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme1/theme1.css
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme1/theme1.css?rev=388368&r1=388367&r2=388368&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme1/theme1.css (original)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme1/theme1.css Thu Mar 23 20:50:31 2006
@@ -35,3 +35,10 @@
     background-repeat: no-repeat;
     background-position: center center;
 }
+
+
+.theme1 .dojoTitleBarIcon {
+    margin-top: 2px;
+    margin-left: 2px;
+    margin-right: 3px;
+}

Modified: portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme2/theme2.css
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme2/theme2.css?rev=388368&r1=388367&r2=388368&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme2/theme2.css (original)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/desktop/windowthemes/theme2/theme2.css Thu Mar 23 20:50:31 2006
@@ -35,3 +35,9 @@
     background-repeat: no-repeat;
     background-position: center center;
 }
+
+.theme2 .dojoTitleBarIcon {
+    margin-top: 2px;
+    margin-left: 2px;
+    margin-right: 3px;
+}

Modified: portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/jetspeed-ajax-api.js
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/jetspeed-ajax-api.js?rev=388368&r1=388367&r2=388368&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/jetspeed-ajax-api.js (original)
+++ portals/jetspeed-2/trunk/src/webapp/javascript/jetspeed/jetspeed-ajax-api.js Thu Mar 23 20:50:31 2006
@@ -20,21 +20,26 @@
  */
 
 // ... base objects
-jetspeed = {} ;
-jetspeed.om = {} ;
-jetspeed.ui = {} ;
+if ( ! window.jetspeed )
+    jetspeed = {} ;
+if ( ! jetspeed.om )
+    jetspeed.om = {} ;
+if ( ! jetspeed.ui )
+    jetspeed.ui = {} ;
+if ( ! jetspeed.ui.widget )
+    jetspeed.ui.widget = {} ;
 
 jetspeed.version = 
 {
     major: 2, minor: 1, patch: 0, flag: "dev",
     revision: "",
-	toString: function() 
-	{
-		with (jetspeed.version) 
-		{
-			return major + "." + minor + "." + patch + flag + " (" + revision + ")";
-		}
-	}
+    toString: function() 
+    {
+        with (jetspeed.version) 
+        {
+            return major + "." + minor + "." + patch + flag + " (" + revision + ")";
+        }
+    }
 };
 
 jetspeed.basePortalUrl = function()
@@ -47,33 +52,53 @@
     return jetspeed.basePortalUrl() + "/jetspeed" ;
 }
 
+jetspeed.doRender = function(url,portletEntityId)
+{
+    var targetPortlet = jetspeed.page.getPortlet( portletEntityId );
+    if ( targetPortlet )
+    {
+        //dojo.debug( "render " + portletEntityId + " url: " + url );
+        targetPortlet.retrievePortletContent(null,url);
+    }
+}
+
+jetspeed.page = null ;   // BOZO: is this it? one page at a time?
+jetspeed.initializeDesktop = function()
+{
+    jetspeed.loadPage();
+}
+jetspeed.loadPage = function()
+{
+    jetspeed.testLoadPageCreateWidgetPortlets();
+}
 jetspeed.testLoadPageCreateWidgetPortlets = function()
 {
-    var page = new jetspeed.om.Page() ;
-    page.retrievePsml( new jetspeed.om.PageContentListenerCreateWidget() ) ;
+    jetspeed.page = new jetspeed.om.Page() ;
+    jetspeed.currentTaskbar = new jetspeed.ui.PortalTaskBar() ;
+    jetspeed.page.retrievePsml( new jetspeed.om.PageContentListenerCreateWidget() ) ;
 }
 
 jetspeed.testLoadPageCreateDivPortlets = function()
 {
-    var page = new jetspeed.om.Page() ;
-    page.retrievePsml( new jetspeed.om.PageContentListenerCreateDiv() ) ;
+    jetspeed.currentPage = new jetspeed.om.Page() ;
+    jetspeed.page.retrievePsml( new jetspeed.om.PageContentListenerCreateDiv() ) ;
 }
+//jetspeed.testPortletEntityIdFilter = [ "dp-18" ];   // note: uncomment to filter the displayed portlets for testing
 
 jetspeed.testCreatePortletWindows = function( /* Portlet[] */ portlets, portletWindowFactory )
 {
-    //if ( ! dojo.lang.isArray(portlets) && ! dojo.lang.isObject(portlets) )
-    //{
-    //    if ( portlets && dojo.lang.isSubOf(portlets, jetspeed.om.Portlet))
-    //        portlets = [portlets];
-    //    else
-    //        portlets = null;
-    //}
     if ( portlets )
     {
         for (var portletIndex in portlets)
         {
             var portlet = portlets[portletIndex];
-            portlet.createPortletWindow(portletWindowFactory);
+            if ( jetspeed.testPortletEntityIdFilter )
+            {
+                if (! dojo.lang.inArray(jetspeed.testPortletEntityIdFilter, portletIndex))
+                    portlet = null;
+            }
+            if (portlet)
+                portlet.createPortletWindow(portletWindowFactory);
         }
     }
 }
@@ -208,6 +233,17 @@
         }
     },
 
+    getPortletArray: function()
+    {
+        if (! this.portlets) return null ;
+        var portletArray = [];
+        for (var portletIndex in this.portlets)
+        {
+            var portlet = this.portlets[portletIndex];
+            portletArray.push(portlet);
+        }
+        return portletArray;
+    },
     getPortlets: function()
     {
         if (this.portlets)
@@ -287,15 +323,15 @@
     this.title = portletTitle;
     this.properties = {};
 }
-jetspeed.om.Portlet.prototype =   /* defining prototypes like this is not cool if the object uses dojo.inherits (this would replace pt)*/
-{                                 /* dojo.lang.extend would allow this syntax instead of [<type>.prototype.<propname> = <propval>]* */
+jetspeed.om.Portlet.prototype =   /* defining prototypes like this is not cool if the object uses dojo.inherits (this would replace pt)  */
+{                                 /* dojo.lang.extend would allow this syntax instead of [<type>.prototype.<propname> = <propval>]*      */
     name: null,
     entityId: null,
     title: null,
     
     windowFactory: null,
     windowObj: null,
-    
+
     createPortletWindow: function(portletWindowFactory, portletContentListener)
     {
         if ( portletWindowFactory == null )
@@ -307,26 +343,32 @@
         this.retrievePortletContent(portletContentListener) ;
     },
 
-    getPortletUrl: function()
+    getPortletUrl: function(renderUrl)
     {
-        return jetspeed.basePortalUrl() + "/jetspeed/portlet?entity=" + this.entityId + "&portlet=" + this.name + "&encoder=desktop";
+        var queryString = "?entity=" + this.entityId + "&portlet=" + this.name + "&encoder=desktop";
+        if (renderUrl)
+            return renderUrl + queryString;
+        return jetspeed.basePortalUrl() + "/jetspeed/portlet" + queryString;
     },
 
-    retrievePortletContent: function(portletContentListener)
+    retrievePortletContent: function(portletContentListener,renderUrl)
     {
         if ( portletContentListener == null )
             portletContentListener = new jetspeed.om.PortletContentListener() ;
-
         var portlet = this ;
         dojo.io.bind({
-            url: portlet.getPortletUrl(),
+            url: portlet.getPortletUrl(renderUrl),
             load: function(type, data, evt)
             {
+                //dojo.debug( "loaded content for url: " + this.url );
                 //dojo.debug( "r e t r i e v e P o r t l e t C o n t e n t . l o a d" ) ;
                 //dojo.debug( "  type:" );
                 //dojo.debugShallow( type ) ;
                 //dojo.debug( "  evt:" );
                 //dojo.debugShallow( evt ) ;
+
+                //if ( portlet.entityId == "dp-18" || portlet.entityId == "dp-7" )
+                //    dojo.debug( "content: " + data);
                 if ( portletContentListener && dojo.lang.isFunction( portletContentListener.notifySuccess ) )
                 {
                     portletContentListener.notifySuccess(data, portlet);
@@ -370,6 +412,32 @@
     }
 }
 
+// ... jetspeed.ui.PortalTaskBar
+jetspeed.ui.PortalTaskBar = function()
+{
+    var tbProps = {};
+    tbProps.templateCssPath = new dojo.uri.Uri(jetspeed.basePortalDesktopUrl(), "jetspeed/javascript/desktop/widget/HtmlTaskBar.css") ;
+    tbProps.templatePath = new dojo.uri.Uri(jetspeed.basePortalDesktopUrl(), "jetspeed/javascript/desktop/widget/HtmlTaskBarItemTemplate.html") ;
+    // BOZO: improve this junk ^^^ 
+
+    this.taskbarProps = tbProps ;
+    this.widgetId = "jetspeedTaskbar";
+
+    this.createTaskBar();
+}
+jetspeed.ui.PortalTaskBar.prototype.createTaskBar = function()
+{
+    var nWidget = dojo.widget.createWidget('PortalTaskBar', this);
+    nWidget.domNode.id = "jetspeedTaskbar";  // BOZO: must set the id here - it gets defensively cleared by dojo
+    nWidget.domNode.style.cssText = "background-color: #666; width: 100%; bottom: 5px; height: 100px";
+
+    var addToElmt = document.getElementById("jetspeedDesktop");
+    addToElmt.appendChild(nWidget.domNode);
+    
+    this.taskbarWidget = nWidget;
+}
+
+
 // ... jetspeed.ui.PortletWidgetWindow
 jetspeed.ui.PortletWidgetWindow = function(/* Portlet */ portletObj)
 {
@@ -399,8 +467,7 @@
     else
         this.iconSrc =  new dojo.uri.Uri(jetspeed.basePortalDesktopUrl(), "jetspeed/javascript/desktop/windowicons/document.gif" ) ;
 
-    dojo.debug("PortletWidgetWindow  widgetId=" + this.widgetId + "  windowtheme=" + windowtheme + "  templateCssPath=" + this.templateCssPath);
-
+    //dojo.debug("PortletWidgetWindow  widgetId=" + this.widgetId + "  windowtheme=" + windowtheme + "  templateCssPath=" + this.templateCssPath);
 
     this.createWindow();
 }
@@ -412,28 +479,95 @@
 jetspeed.ui.PortletWidgetWindow.prototype.displayMaximizeAction = true;
 jetspeed.ui.PortletWidgetWindow.prototype.taskBarId = "jetspeedTaskbar";
 jetspeed.ui.PortletWidgetWindow.prototype.nextIndex = 1;
+jetspeed.ui.PortletWidgetWindow.prototype.titleMouseIn = 0;
+jetspeed.ui.PortletWidgetWindow.prototype.titleLit = false;
 jetspeed.ui.PortletWidgetWindow.prototype.titleMouseOver = function(evt)
 {
-    this.titleLight( this ) ;  // NOTE: setup in template HtmlFloatingPane.html: dojoAttachEvent="onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+    var self = this ;
+    this.titleMouseIn++ ;
+    if ( this.titleMouseIn == 1 )
+    {
+        window.setTimeout( function() { if ( self.titleMouseIn > 0 ) { self.titleLight( self ); self.titleMouseIn = 0; } }, 270 ) ;
+        // NOTE: setup in template HtmlFloatingPane.html: dojoAttachEvent="onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+    }
+}
+jetspeed.ui.PortletWidgetWindow.prototype.titleButtonInclude = function(condition, requiredResult, button, included)
+{
+    if ( button == null ) return included ;
+    if (dojo.lang.isFunction(condition))
+    {
+        if (condition.call(this) == requiredResult)
+            included.push(button);
+    }
+    else if ( condition == requiredResult )
+    {
+        included.push(button);
+    }
+    return included;
+}
+jetspeed.ui.PortletWidgetWindow.prototype.minimizeWindow = function(evt)
+{
+    var tbiWidget = dojo.widget.byId(this.widgetId + "_tbi");
+
+    //var left = dojo.style.totalOffsetLeft(tbiWidget.domNode);
+    //var top = dojo.style.totalOffsetTop(tbiWidget.domNode) - 100;
+    //dojo.debug( "minimizeWindow: " + this.domNode.id + "  move-to-left: " + left + " move-to-top: " + top ) ;
+    //var widgetToHide = this ;
+    //dojo.fx.html.slideTo( this.domNode, 300, [ left, top ], function() { dojo.fx.html.wipeOut(widgetToHide.domNode, 400); } ) ;
+    if ( tbiWidget && tbiWidget.domNode )
+        dojo.fx.html.implode( this.domNode, tbiWidget.domNode, 300 ) ;
+    else
+        this.hide();
+    
+    this.windowState = "minimized";
 }
 jetspeed.ui.PortletWidgetWindow.prototype.titleLight = function(fpWidget)
 {
-    fpWidget.minimizeAction.style.display = (fpWidget.displayMinimizeAction ? "" : "none");
-    fpWidget.maximizeAction.style.display = (fpWidget.displayMaximizeAction && fpWidget.windowState!="maximized" ? "" : "none");
-    fpWidget.restoreAction.style.display = (fpWidget.displayMaximizeAction && fpWidget.windowState!="normal" ? "" : "none");
-    fpWidget.closeAction.style.display = (fpWidget.displayCloseAction ? "" : "none");
+    var mightBeEnlightened = [] ;
+    this.titleButtonInclude(fpWidget.displayMinimizeAction, true, fpWidget.minimizeAction, mightBeEnlightened);
+    this.titleButtonInclude(fpWidget.displayMaximizeAction, true, fpWidget.maximizeAction, mightBeEnlightened);
+    this.titleButtonInclude(fpWidget.displayRestoreAction, true, fpWidget.restoreAction, mightBeEnlightened);
+    this.titleButtonInclude(fpWidget.displayCloseAction, true, fpWidget.closeAction, mightBeEnlightened);
+    var toBeEnlightened = [] ;
+    for ( var i = 0 ; i < mightBeEnlightened.length ; i++ )
+    {
+        var btn = mightBeEnlightened[i];
+        if (btn.style.display == "none")
+            toBeEnlightened.push(btn);
+    }
+    jetspeed.ui.fadeIn(toBeEnlightened, 325, "");
+    fpWidget.titleLit = true ;
+}
+jetspeed.ui.PortletWidgetWindow.prototype.titleDim = function(fpWidget, immediateForce)
+{
+    var mightBeExtinguished = [ fpWidget.restoreAction, fpWidget.maximizeAction, fpWidget.minimizeAction, fpWidget.closeAction ] ;
+    var toBeExtinguished = [] ;
+    for ( var i = 0 ; i < mightBeExtinguished.length ; i++ )
+    {
+        var btn = mightBeExtinguished[i];
+        if (immediateForce)
+            btn.style.display = "none" ;
+        else if (btn.style.display != "none")
+            toBeExtinguished.push(btn);
+    }
+    jetspeed.ui.fadeOut(toBeExtinguished, 280);
+    fpWidget.titleLit = false ;
 };
 jetspeed.ui.PortletWidgetWindow.prototype.titleMouseOut = function(evt)
 {
-    this.titleDim( this ) ;   // NOTE: setup in template HtmlFloatingPane.html: dojoAttachEvent="onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+    var self = this ;
+    var nTitleMouseIn = this.titleMouseIn ;
+    if ( nTitleMouseIn > 0 )
+    {
+        nTitleMouseIn = Math.max( 0, ( nTitleMouseIn - 1 ) );
+        this.titleMouseIn = nTitleMouseIn ;
+    }
+    if ( nTitleMouseIn == 0 && this.titleLit )
+    {
+        window.setTimeout( function() { if ( self.titleMouseIn == 0 ) { self.titleDim( self ); } }, 200 ) ;
+        // NOTE: setup in template HtmlFloatingPane.html: dojoAttachEvent="onMouseOver:titleMouseOver;onMouseOut:titleMouseOut"
+    }
 }
-jetspeed.ui.PortletWidgetWindow.prototype.titleDim = function(fpWidget)
-{
-    fpWidget.restoreAction.style.display="none";
-    fpWidget.maximizeAction.style.display="none";
-    fpWidget.minimizeAction.style.display="none";
-    fpWidget.closeAction.style.display="none";
-};
 
 jetspeed.ui.PortletWidgetWindow.prototype.incrementNextIndex = function()
 {
@@ -455,10 +589,10 @@
     nWidget.domNode.style.width = "280px";
     nWidget.domNode.style.height = "200px";
     // NOTE: the width/height specified get updated when the size is changed by the user
-    nWidget.domNode.style.left = (((this.getNextIndex() -2) * 30 ) + 100) + "px";
-    nWidget.domNode.style.top = (((this.getNextIndex() -2) * 30 ) + 100) + "px";
+    nWidget.domNode.style.left = (((this.getNextIndex() -2) * 30 ) + 200) + "px";
+    nWidget.domNode.style.top = (((this.getNextIndex() -2) * 30 ) + 170) + "px";
     
-    this.titleDim(nWidget);
+    this.titleDim(nWidget, true);
 
     var addToElmt = document.getElementById("jetspeedDesktop");
     addToElmt.appendChild(nWidget.domNode);
@@ -477,82 +611,82 @@
 // ... jetspeed.ui.PortletDivWindow
 jetspeed.ui.PortletDivWindow = function( /* Portlet */ portletObj )
 {
-	this.portlet = portletObj;
-	this.loaded = false;
+    this.portlet = portletObj;
+    this.loaded = false;
     this.buildPortlet();
 }
 jetspeed.ui.PortletDivWindow.prototype.buildPortlet = function()
 {
     var self = this;
-	var divPortlet = document.createElement("div");
+    var divPortlet = document.createElement("div");
     this.portlet_element = divPortlet;
-	divPortlet.className = "portletBody";
-	divPortlet.dataObj = this;
+    divPortlet.className = "portletBody";
+    divPortlet.dataObj = this;
 
-	var divPortletFrame = document.createElement("div");
-	this.child_portletFrame = divPortletFrame;
-	divPortletFrame.className = "portletFrame";
-
-	var divPortletHeader = document.createElement("div");
-	this.child_portletHeader = divPortletHeader;
-	divPortletHeader.className = "portletHeader";
-	
-	divPortletHeader.onmouseover = function(){
-		self.highlight();
-	}
-	divPortletHeader.onmouseout = function(){
-		self.unHighlight();
-	}
-
-	var divShowHide = document.createElement("div");
-	this.child_showHide = divShowHide;
-	divShowHide.className = "showHide";
-	divShowHide.innerHTML = (this.portlet.status==0) ? '<img src="/jetspeed/themes/blue/images/showMod.gif"/>' : '<img src="/jetspeed/themes/blue/images/hideMod.gif"/>';
-	divShowHide.style.visibility = "hidden";		
+    var divPortletFrame = document.createElement("div");
+    this.child_portletFrame = divPortletFrame;
+    divPortletFrame.className = "portletFrame";
+
+    var divPortletHeader = document.createElement("div");
+    this.child_portletHeader = divPortletHeader;
+    divPortletHeader.className = "portletHeader";
+    
+    divPortletHeader.onmouseover = function(){
+        self.highlight();
+    }
+    divPortletHeader.onmouseout = function(){
+        self.unHighlight();
+    }
+
+    var divShowHide = document.createElement("div");
+    this.child_showHide = divShowHide;
+    divShowHide.className = "showHide";
+    divShowHide.innerHTML = (this.portlet.status==0) ? '<img src="/jetspeed/themes/blue/images/showMod.gif"/>' : '<img src="/jetspeed/themes/blue/images/hideMod.gif"/>';
+    divShowHide.style.visibility = "hidden";        
     dojo.event.connect( divShowHide, "onmousedown", showHide ) ;
 
-	var divTitle = document.createElement("div");
-	this.child_title = divTitle;
-	divTitle.className = "title";
-	divTitle.appendChild(document.createTextNode(this.portlet.name));
-
-	var divClose = document.createElement("div");
-	this.child_close = divClose;
-	divClose.className = "close";
-	divClose.innerHTML = '<img src="/jetspeed/themes/blue/images/closeMod.gif"/>';
-	divClose.style.display = "none";
+    var divTitle = document.createElement("div");
+    this.child_title = divTitle;
+    divTitle.className = "title";
+    divTitle.appendChild(document.createTextNode(this.portlet.name));
+
+    var divClose = document.createElement("div");
+    this.child_close = divClose;
+    divClose.className = "close";
+    divClose.innerHTML = '<img src="/jetspeed/themes/blue/images/closeMod.gif"/>';
+    divClose.style.display = "none";
     dojo.event.connect( divClose, "onmousedown", close ) ;
-	
-	var divEditContent = document.createElement("div");
-	this.child_editContent = divEditContent;
-	divEditContent.className = "editContent";
-
-	var divPortletContent = document.createElement("div");
-	this.child_moduleContent = divPortletContent;
-	divPortletContent.className = "moduleContent";
-	divPortletContent.innerHTML = "Loading ...";
-	if (this.portlet.status==0) divPortletContent.style.display = "none";
-
-	divPortletHeader.appendChild(divShowHide);
-	divPortletHeader.appendChild(divClose);
-	divPortletHeader.appendChild(divTitle);
-
-	divPortletFrame.appendChild(divPortletHeader);
-	divPortletFrame.appendChild(divEditContent);
-	divPortletFrame.appendChild(divPortletContent);
-
-	divPortlet.appendChild(divPortletFrame);
-
-	function showHide(e) {
-		e.cancelBubble = true;
-		self.showHideModule();
-	}
-	function close(e) {
-		e.cancelBubble = true;
-		self.close();
-		delete self;
-	}
-	
+    
+    var divEditContent = document.createElement("div");
+    this.child_editContent = divEditContent;
+    divEditContent.className = "editContent";
+
+    var divPortletContent = document.createElement("div");
+    this.child_moduleContent = divPortletContent;
+    divPortletContent.className = "moduleContent";
+    divPortletContent.innerHTML = "Loading ...";
+    if (this.portlet.status==0) divPortletContent.style.display = "none";
+
+    divPortletHeader.appendChild(divShowHide);
+    divPortletHeader.appendChild(divClose);
+    divPortletHeader.appendChild(divTitle);
+
+    divPortletFrame.appendChild(divPortletHeader);
+    divPortletFrame.appendChild(divEditContent);
+    divPortletFrame.appendChild(divPortletContent);
+
+    divPortlet.appendChild(divPortletFrame);
+
+    function showHide(e) {
+        e.cancelBubble = true;
+        self.showHideModule();
+    }
+    function close(e) {
+        e.cancelBubble = true;
+        self.close();
+        delete self;
+    }
+    
     var addtoElmt = document.getElementById( "jetspeedDesktop" ) ;
     addtoElmt.appendChild(divPortlet);
 
@@ -576,11 +710,11 @@
     this.child_close.style.display = "none";
 }
 jetspeed.ui.PortletDivWindow.prototype.showHideModule = function() {
-	if (arguments[0] != undefined) {
-		arguments[0] ? this.show() : this.hide();
-	} else {
-		this.child_moduleContent.style.display=='none' ? this.show() : this.hide();
-	}
+    if (arguments[0] != undefined) {
+        arguments[0] ? this.show() : this.hide();
+    } else {
+        this.child_moduleContent.style.display=='none' ? this.show() : this.hide();
+    }
 }
 jetspeed.ui.PortletDivWindow.prototype.close = function()
 {
@@ -588,15 +722,54 @@
 }
 jetspeed.ui.PortletDivWindow.prototype.show = function()
 {
-	this.child_moduleContent.style.display = 'block';
-	this.child_showHide.firstChild.setAttribute("src", "/jetspeed/themes/blue/images/hideMod.gif");
-	this.portlet.status = 1;
+    this.child_moduleContent.style.display = 'block';
+    this.child_showHide.firstChild.setAttribute("src", "/jetspeed/themes/blue/images/hideMod.gif");
+    this.portlet.status = 1;
 }
 jetspeed.ui.PortletDivWindow.prototype.hide = function()
 {
-	this.child_moduleContent.style.display = 'none';
-	this.child_showHide.firstChild.setAttribute("src", "/jetspeed/themes/blue/images/showMod.gif");
-	this.child_editContent.style.display = "none";
-	this.portlet.status = 0;
+    this.child_moduleContent.style.display = 'none';
+    this.child_showHide.firstChild.setAttribute("src", "/jetspeed/themes/blue/images/showMod.gif");
+    this.child_editContent.style.display = "none";
+    this.portlet.status = 0;
 }
 
+
+// ... fade-in convenience methods (work with set of nodes)
+jetspeed.ui.fadeIn = function(nodes, duration, displayStyleValue)
+{
+    jetspeed.ui.fade(nodes, duration, displayStyleValue, 0, 1);
+}
+jetspeed.ui.fadeOut = function(nodes, duration)
+{
+    jetspeed.ui.fade(nodes, duration, "none", 1, 0);
+}
+jetspeed.ui.fade = function(nodes, duration, displayStyleValue, startOpac, endOpac)
+{
+    if ( nodes.length > 0 )
+    {   // mimick dojo.fx.html.fade, but for all objects together
+        for ( var i = 0 ; i < nodes.length ; i++ )
+        {
+            dojo.fx.html._makeFadeable(nodes[i]);
+            if (displayStyleValue != "none")
+                nodes[i].style.display = displayStyleValue ;
+        }
+        var anim = new dojo.animation.Animation(
+		                new dojo.math.curves.Line([startOpac],[endOpac]),
+		                duration, 0);
+	    dojo.event.connect(anim, "onAnimate", function(e) {
+            for ( var mi = 0 ; mi < nodes.length ; mi++ )
+            {
+                dojo.style.setOpacity(nodes[mi], e.x);
+	        }});
+        
+        if (displayStyleValue == "none")
+        {
+            dojo.event.connect(anim, "onEnd", function(e) {
+			    for ( var mi = 0 ; mi < nodes.length ; mi++ )
+                    nodes[mi].style.display = displayStyleValue ;
+		    });
+        }
+        anim.play(true);
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org