Author: maksimkaszynski
Date: 2007-11-20 14:34:53 -0500 (Tue, 20 Nov 2007)
New Revision: 4117
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/resources/org/richfaces/renderkit/html/scripts/context-menu.js
Log:
Context menu macro substitution
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-20
17:34:11 UTC (rev 4116)
+++
branches/3.1.x/sandbox/ui/contextMenu/src/main/java/org/richfaces/renderkit/html/ContextMenuRendererBase.java 2007-11-20
19:34:53 UTC (rev 4117)
@@ -90,9 +90,11 @@
throws IOException {
ResponseWriter writer = context.getResponseWriter();
writer.startElement("script", component);
- writer.write("var evaluator = ");
+ writer.write("new Richfaces.ContextMenu('");
+ writer.write(component.getClientId(context));
+ writer.write("',");
writeScriptBody(context, component, true);
- writer.write(";\n new Insertion.Top($('" + component.getClientId(context)
+ "'), evaluator.invoke('getContent', window).join(''));");
+ writer.write(");");
writer.endElement("script");
}
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-20
17:34:11 UTC (rev 4116)
+++
branches/3.1.x/sandbox/ui/contextMenu/src/main/resources/org/richfaces/renderkit/html/scripts/context-menu.js 2007-11-20
19:34:53 UTC (rev 4117)
@@ -1,4 +1,42 @@
if (!window.Richfaces) var Richfaces = {};
-Richfaces.ContextMenu = {
- //show
+Richfaces.ContextMenu = Class.create();
+
+Richfaces.ContextMenu.prototype = {
+
+ initialize: function(id, evaluator) {
+ this.id = id;
+ this.evaluator = evaluator;
+ $(id).component = this;
+
+ },
+
+ show: function(event, context) {
+ this.construct(context);
+ new RichFaces.Menu.DelayedContextMenu(this.id + "_menu", event).show();
+ },
+
+ construct: function(context) {
+ if (this.isNewContext(context)) {
+ this.destroy();
+ }
+ 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(''));
+
+ },
+
+ destroy: function() {
+ var div = $(this.id + ":_auto_created");
+ if (div) {
+ div.parentNode.removeChild(div);
+ }
+ },
+
+ isNewContext: function(context) {
+ //TODO: Check whether contexts are the same and therefore
+ // do not destroy menu
+ //var oldContext = this.context || {};
+ return true;
+ }
};
\ No newline at end of file
Show replies by date