Hi,

I wonder when to use a stack, a module or both. For example I want to use "MetisMenu" (small jquery plugin that uses bootstrap/collapse and comes with some css).

If I use Stack only, I can define js+css but I cannot define that it requires jquery + bootstrap/collapse. (I could modify the original plugin code but I'd prefre to keep it unchanged).

If I use Module, I can define it's dependency but cannot include the CSS.

So I'll end up in using both, the following way:

from MetisMenuStack.java:

        List<StackExtension> config=new ArrayList<>();

        config.add(StackExtension.module("MetisMenu"));
config.add(StackExtension.stylesheet("classpath:META-INF/assets/metismenu-1.0.1/jquery.metisMenu.css"));

from MyTapestryModule.java:

    @Contribute(JavaScriptStackSource.class)
public static void addMyStack(MappedConfiguration<String, JavaScriptStack> configuration)
    {
        configuration.addInstance("MetisMenu", MetisMenuStack.class);
    }
    @Contribute(ModuleManager.class)
public static void setupModule(MappedConfiguration<String, Object> configuration, @Path("classpath:META-INF/assets/metismenu-1.0.1/jquery.metisMenu.js") Resource metismenu)
    {
configuration.add("MetisMenu", new JavaScriptModuleConfiguration(metismenu).dependsOn("bootstrap/collapse"));
    }

Is this the right way to do it? It looks a bit wired to me because:
- MetisMenuStack declares that it gets loaded by MetisMenu module. Normally the module should declare that it requires the css (i.e. the stack). - All this is spread across multiple (at least two) classes. Especially the definition of which assets belong together is split across both classes (module asset in TapestryModule, CSS asset in the stack definition).

How can I do it better?

Kind regards,
Michael.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to