This is something that I did for my private use. It works on my machine,
etc...

On Fri, Sep 26, 2008 at 12:16 PM, Ernst Naezer <[EMAIL PROTECTED]>wrote:

> Hi guys,
>
> did anybody ever get to writing this and some test cases under the same
> license as the rest of the code so we can add it to the Monorail base and
> fill that empty directory :)
>
> cheers,
> Ernst
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to castle-project-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

using System;
using System.Collections.Generic;
using Castle.MonoRail.Framework.JSGeneration;

namespace HibernatingRhinos
{
        public class JQueryGenerator : AbstractJSGenerator
        {
                static IDictionary<string, string> positions = new 
Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase)
                {
                        {"before", "before"},
            {"after", "after"},
                        {"top", "prepend"},
                        {"bottom", "append"},
                        {"prepend", "prepend"},
                        {"append", "append"}
                };

                public JQueryGenerator(IJSCodeGenerator codeGenerator)
                        : base(codeGenerator)
                {
                }

                public override IJSElementGenerator 
CreateElementGenerator(string root)
                {
                        return new JQueryElementGenerator(this, root);
                }

                public override void Hide(string[] ids)
                {
                        SelectRelevantElements(ids);
                        CodeGenerator.Write(".hide();");
                }

                private void SelectRelevantElements(params string[] ids)
                {
                        if (ids.Length == 0)
                                throw new InvalidOperationException("Must pass 
at least one id");

                        CodeGenerator.Write("jQuery(");
                        foreach (string id in ids)
                        {
                                CodeGenerator.Write("#" + id + ",");
                        }
                        CodeGenerator.RemoveTail();
                        CodeGenerator.Write(")");
                }

                public override void InsertHtml(string position, string id, 
object renderOptions)
                {
                        string realPosition;
                        if (positions.TryGetValue(position, out realPosition) 
== false)
                                throw new InvalidOperationException("Position " 
+ position + " is invalid");
                        SelectRelevantElements(id);
                        CodeGenerator.Write(".");
                        CodeGenerator.Write(realPosition);
                        CodeGenerator.Write(");");
                }

                public override void Remove(string[] ids)
                {
                        SelectRelevantElements(ids);
                        CodeGenerator.Write(".remove();");
                }

                public override void Replace(string id, object renderOptions)
                {
                        SelectRelevantElements(id);
                        CodeGenerator.Write(".replaceWith(");
                        CodeGenerator.Write(Render(renderOptions).ToString());
                        CodeGenerator.Write(");");

                }

                public override void ReplaceHtml(string id, object 
renderOptions)
                {
                        SelectRelevantElements(id);
                        CodeGenerator.Write(".empty();");
                        SelectRelevantElements(id);
                        CodeGenerator.Write(".append(");
                        CodeGenerator.Write(Render(renderOptions).ToString());
                        CodeGenerator.Write(");");
                }

                public override void Show(string[] ids)
                {
                        SelectRelevantElements(ids);
                        CodeGenerator.Write(".show();");
                }

                public override void Toggle(string[] ids)
                {
                        SelectRelevantElements(ids);
                        CodeGenerator.Write(".toggle();");
                }
        }
}
using Castle.MonoRail.Framework.JSGeneration;

namespace HibernatingRhinos
{
        public class JQueryElementGenerator : IJSElementGenerator
        {
                private readonly JQueryGenerator parent;
                private readonly string root;

                public JQueryElementGenerator(JQueryGenerator parent, string 
root)
                {
                        this.parent = parent;
                        this.root = root;
                }

                public void ReplaceHtml(object renderOptions)
                {
                        parent.ReplaceHtml(root, renderOptions);
                }

                public void Replace(object renderOptions)
                {
                        parent.Replace(root, renderOptions);
                }

                public IJSGenerator ParentGenerator
                {
                        get { return parent; }
                }
        }
}

Reply via email to