Author: maksimkaszynski
Date: 2007-11-26 09:22:43 -0500 (Mon, 26 Nov 2007)
New Revision: 4260
Modified:
branches/3.1.x/sandbox/ui/contextMenu/src/main/config/component/contextMenu.xml
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/component/UIContextMenu.java
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/renderkit/html/ContextMenuRendererBase.java
branches/3.1.x/sandbox/ui/contextMenu/src/main/resources/org/richfaces/renderkit/html/scripts/context-menu.js
Log:
Context Menu - support for most features
Modified: branches/3.1.x/sandbox/ui/contextMenu/src/main/config/component/contextMenu.xml
===================================================================
---
branches/3.1.x/sandbox/ui/contextMenu/src/main/config/component/contextMenu.xml 2007-11-26
14:22:24 UTC (rev 4259)
+++
branches/3.1.x/sandbox/ui/contextMenu/src/main/config/component/contextMenu.xml 2007-11-26
14:22:43 UTC (rev 4260)
@@ -46,5 +46,12 @@
</description>
<defaultvalue>true</defaultvalue>
</property>
+ <property>
+ <name>disableDefaultMenu</name>
+ <classname>boolean</classname>
+ <description>
+ </description>
+ <defaultvalue>true</defaultvalue>
+ </property>
</component>
</components>
Modified:
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/component/UIContextMenu.java
===================================================================
---
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/component/UIContextMenu.java 2007-11-26
14:22:24 UTC (rev 4259)
+++
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/component/UIContextMenu.java 2007-11-26
14:22:43 UTC (rev 4260)
@@ -38,4 +38,8 @@
public abstract void setEvent(String event);
+ public abstract boolean isDisableDefaultMenu();
+
+ public abstract void setDisableDefaultMenu(boolean b);
+
}
Modified:
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/renderkit/html/ContextMenuRendererBase.java
===================================================================
---
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/renderkit/html/ContextMenuRendererBase.java 2007-11-26
14:22:24 UTC (rev 4259)
+++
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/renderkit/html/ContextMenuRendererBase.java 2007-11-26
14:22:43 UTC (rev 4260)
@@ -28,6 +28,7 @@
import java.util.List;
import java.util.Map;
+import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
@@ -97,16 +98,30 @@
public void encodeChildren(FacesContext context, UIComponent component)
throws IOException {
+ UIContextMenu menu = (UIContextMenu) component;
ResponseWriter writer = context.getResponseWriter();
+
+ String event = menu.getEvent();
+
+ if (event == null) {
+ throw new FacesException("Attribute 'event' is not set for component
" + component.getClientId(context));
+ }
+
writer.startElement("script", component);
- writer.write("new Richfaces.ContextMenu('");
- writer.write(component.getClientId(context));
- writer.write("',");
+ writer.writeText("new Richfaces.ContextMenu('", null);
+ writer.writeText(component.getClientId(context), null);
+ writer.writeText("',", null);
writeScriptBody(context, component, true);
- writer.write(")");
- writer.write(getClientAttachmentOptions(context, (UIContextMenu) component));
- writer.write(";");
+ writer.writeText(")", null);
+ writer.writeText(getClientAttachmentOptions(context, menu), null);
+ writer.writeText(";", null);
+ if (menu.isDisableDefaultMenu()) {
+ writer.writeText("Richfaces.disableDefaultHandler('", null);
+ writer.writeText(event, null);
+ writer.writeText("');", null);
+ }
+
writer.endElement("script");
}
@@ -121,10 +136,6 @@
String event = contextMenu.getEvent();
- if (event == null) {
- event = "oncontextmenu";
- }
-
function.addParameter(event);
Map params = new LinkedHashMap();
Modified:
branches/3.1.x/sandbox/ui/contextMenu/src/main/resources/org/richfaces/renderkit/html/scripts/context-menu.js
===================================================================
---
branches/3.1.x/sandbox/ui/contextMenu/src/main/resources/org/richfaces/renderkit/html/scripts/context-menu.js 2007-11-26
14:22:24 UTC (rev 4259)
+++
branches/3.1.x/sandbox/ui/contextMenu/src/main/resources/org/richfaces/renderkit/html/scripts/context-menu.js 2007-11-26
14:22:43 UTC (rev 4260)
@@ -1,6 +1,18 @@
-if (!window.Richfaces) var Richfaces = {};
+if (!window.Richfaces) window.Richfaces = {};
Richfaces.ContextMenu = Class.create();
+Array.prototype.invock = function(method) {
+ var args = $A(arguments).slice(1);
+ var a = [];
+
+ for(var i = 0; i < this.length; i++) {
+ var each = this[i];
+ a[i] = each[method].apply(each,args);
+ }
+
+ return a;
+}
+
Richfaces.ContextMenu.prototype = {
initialize: function(id, evaluator) {
@@ -44,7 +56,8 @@
var div = document.createElement("div");
div.id = this.id + ":_auto_created";
$(this.id).appendChild(div);
- new Insertion.Top(div, this.evaluator.invoke('getContent',
context||window).join(''));
+ var html = this.evaluator.invoke('getContent',
context||window).join('');
+ new Insertion.Top(div, html);
},
@@ -61,4 +74,18 @@
//var oldContext = this.context || {};
return true;
}
-};
\ No newline at end of file
+};
+
+Richfaces.disableDefaultHandler = function(event) {
+ if (event.startsWith('on')) {
+ event = event.substr(2);
+ }
+ Event.observe(document, event, Event.stop);
+};
+
+Richfaces.enableDefaultHandler = function(event) {
+ if (event.startsWith('on')) {
+ event = event.substr(2);
+ }
+ Event.stopObserving(document, event, Event.stop);
+};