[richfaces-svn-commits] JBoss Rich Faces SVN: r11935 - trunk/ui/menu-components/src/main/resources/org/richfaces/renderkit/html/scripts.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Fri Dec 19 15:01:46 EST 2008
Author: abelevich
Date: 2008-12-19 15:01:46 -0500 (Fri, 19 Dec 2008)
New Revision: 11935
Modified:
trunk/ui/menu-components/src/main/resources/org/richfaces/renderkit/html/scripts/menu.js
Log:
https://jira.jboss.org/jira/browse/RF-4592
Modified: trunk/ui/menu-components/src/main/resources/org/richfaces/renderkit/html/scripts/menu.js
===================================================================
--- trunk/ui/menu-components/src/main/resources/org/richfaces/renderkit/html/scripts/menu.js 2008-12-19 19:56:06 UTC (rev 11934)
+++ trunk/ui/menu-components/src/main/resources/org/richfaces/renderkit/html/scripts/menu.js 2008-12-19 20:01:46 UTC (rev 11935)
@@ -109,10 +109,12 @@
}
this.detectWidth();
var menu = $(menuName);
+ var eventResult = true;
+
RichFaces.Menu.fitLayerToContent(menu);
var visible = this.isVisible(menuName);
- this.setVisibility(menuName, visibleFlag);
- this.ieSelectWorkAround(menuName, visibleFlag);
+// this.setVisibility(menuName, visibleFlag);
+// this.ieSelectWorkAround(menuName, visibleFlag);
var menuLayer = this.layers[menu.id];
if (visible && !visibleFlag) {
@@ -121,7 +123,7 @@
menuLayer.eventOnClose(event);
}
if (menuLayer.eventOnCollapse) {
- menuLayer.eventOnCollapse(event);
+ eventResult = menuLayer.eventOnCollapse(event);
}
if (menuLayer.refItem) {
menuLayer.refItem.highLightGroup(false);
@@ -132,8 +134,9 @@
if (menuLayer.eventOnOpen) {
menuLayer.eventOnOpen(event);
}
+
if (menuLayer.eventOnExpand) {
- menuLayer.eventOnExpand(event);
+ eventResult = menuLayer.eventOnExpand(event);
}
if (menuLayer.level>0) {
@@ -147,6 +150,11 @@
}
}
}
+
+ if(eventResult != false) {
+ this.setVisibility(menuName, visibleFlag);
+ this.ieSelectWorkAround(menuName, visibleFlag);
+ }
},
initIFrame: function(layer) {
@@ -359,79 +367,79 @@
this.element = Event.element(e);
this.layer = $(layer);
this.show = function() {
- RichFaces.Menu.Layers.shutdown();
- var body = RichFaces.Menu.getPageDimensions();
- var win = RichFaces.Menu.getWindowDimensions();
- var bodyHeight = body.height;
- var bodyWidth = body.width;
-
- var layer_display = this.layer.style.display;
+ RichFaces.Menu.Layers.shutdown();
+ var body = RichFaces.Menu.getPageDimensions();
+ var win = RichFaces.Menu.getWindowDimensions();
+ var bodyHeight = body.height;
+ var bodyWidth = body.width;
+
+ var layer_display = this.layer.style.display;
if (layer_display=='none')
{
this.layer.style.visibility='hidden';
this.layer.style.display='';
}
-
- var clientX = this.event.clientX;
- var clientY = this.event.clientY;
-
+
+ var clientX = this.event.clientX;
+ var clientY = this.event.clientY;
+
var e = this.event;
var x = Event.pointerX(e);
var y = Event.pointerY(e);
var elementDim = Richfaces.Position.getOffsetDimensions(this.layer);
-
+
var offsets = Position.cumulativeOffset(this.layer);
-
+
offsets[0] -= this.layer.offsetLeft || 0;
offsets[1] -= this.layer.offsetTop || 0;
-
+
var toolTipX = x - offsets[0];
var toolTipY = y - offsets[1];
-
- var layerdim = Element.getDimensions(this.layer);
- var layerLeft = toolTipX;
-
- if (clientX + layerdim.width > win.width) {
- layerLeft -= (layerdim.width - RichFaces.Menu.Layers.shadowWidth - RichFaces.Menu.Layers.CornerRadius);
- }
-
- if (layerLeft < 0) {
- layerLeft = 0;
- }
-
- /*
- if (layerLeft + layerdim.width > bodyWidth) {
- layerLeft = bodyWidth - layerdim.width;
- }
-
- if (layerLeft < 0) {
- layerLeft = 0;
- }
- */
- var layerTop = toolTipY;
- /*if (layertop + layerdim.height > bodyHeight) {
- layertop = bodyHeight - layerdim.height;
- }
-
- if (layertop < 0) {
- layertop = 0;
- }
- */
- if (clientY + layerdim.height > win.height) {
- layerTop -= (layerdim.height - RichFaces.Menu.Layers.shadowWidth - RichFaces.Menu.Layers.CornerRadius);
- }
-
- if (layerTop < 0) {
- layerTop = 0;
- }
-
- this.layer.style.left = layerLeft + "px";
- this.layer.style.top = layerTop + "px";
-
+
+ var layerdim = Element.getDimensions(this.layer);
+ var layerLeft = toolTipX;
+
+ if (clientX + layerdim.width > win.width) {
+ layerLeft -= (layerdim.width - RichFaces.Menu.Layers.shadowWidth - RichFaces.Menu.Layers.CornerRadius);
+ }
+
+ if (layerLeft < 0) {
+ layerLeft = 0;
+ }
+
+ /*
+ if (layerLeft + layerdim.width > bodyWidth) {
+ layerLeft = bodyWidth - layerdim.width;
+ }
+
+ if (layerLeft < 0) {
+ layerLeft = 0;
+ }
+ */
+ var layerTop = toolTipY;
+ /*if (layertop + layerdim.height > bodyHeight) {
+ layertop = bodyHeight - layerdim.height;
+ }
+
+ if (layertop < 0) {
+ layertop = 0;
+ }
+ */
+ if (clientY + layerdim.height > win.height) {
+ layerTop -= (layerdim.height - RichFaces.Menu.Layers.shadowWidth - RichFaces.Menu.Layers.CornerRadius);
+ }
+
+ if (layerTop < 0) {
+ layerTop = 0;
+ }
+
+ this.layer.style.left = layerLeft + "px";
+ this.layer.style.top = layerTop + "px";
+
this.layer.style.display=layer_display;
this.layer.style.visibility='';
- RichFaces.Menu.Layers.LMPopUp(this.layer.id, false,e);
+ RichFaces.Menu.Layers.LMPopUp(this.layer.id, false,e);
RichFaces.Menu.Layers.clearLMTO();
}.bind(this);
}
@@ -1173,22 +1181,55 @@
asContextMenu: function(options){
this.highlightParent = false;
this.options = options || {};
+
if (this.options.ongroupactivate){
this.eventOnGroupActivate = this.options.ongroupactivate.bindAsEventListener(this);
}
+
if (this.options.onitemselect){
this.eventOnItemSelect = this.options.onitemselect.bindAsEventListener(this);
}
+// see RF-4592 for details
+// if (this.options.oncollapse){
+// this.eventOnCollapse = this.options.oncollapse.bindAsEventListener(this);
+// }
+
if (this.options.oncollapse){
- this.eventOnCollapse = this.options.oncollapse.bindAsEventListener(this);
+ this.eventOnCollapse = this.options.oncollapse.bindAsEventListener(this,"collapse");
}
- if (this.options.onexpand){
- this.eventOnExpand = this.options.onexpand.bindAsEventListener(this);
- }
-
+
+// if (this.options.onexpand){
+// this.eventOnExpand = this.options.onexpand.bindAsEventListener(this);
+// }
+
+ if (this.options.onexpand){
+ this.eventOnExpand = this.invokeEvent.bindAsEventListener(this,"expand");
+ }
+
//TODO: clarify
return this;
},
+
+ invokeEvent : function (event, eventName) {
+ var eventFunction = this.options['on'+eventName];
+ var result;
+
+ if (eventFunction) {
+ var eventObj;
+ if (event) {
+ eventObj = event;
+ } else if( document.createEventObject ) {
+ eventObj = document.createEventObject();
+ } else if( document.createEvent ) {
+ eventObj = document.createEvent('Events');
+ eventObj.initEvent(eventName, true, false );
+ }
+ result = eventFunction.call(eventObj);
+ }
+ if (result!=false) result = true;
+ return result;
+ },
+
eventJsToPrototype: function(evtName){
var indexof = evtName.indexOf('on');
if(indexof >= 0){
More information about the richfaces-svn-commits
mailing list