[errai-dev] Errai navigation + templating discussion
Eric Wittmann
eric.wittmann at redhat.com
Tue Jan 15 12:49:14 EST 2013
Darn - anyone have any thoughts regarding how AttachEvents get fired in
the test environment? I tried modifying the existing
TransitionAnchorTest to see if I would get AttachEvents but it seems I
do not.
I'll poke around some more.
-Eric
On 01/15/2013 11:20 AM, Lincoln Baxter, III wrote:
> Sweet! We should add this to the Errai UI docs! Anyone have an example
> of the code (And or a test case?)
>
>
> On Tue, Jan 15, 2013 at 7:28 AM, Eric Wittmann <eric.wittmann at redhat.com
> <mailto:eric.wittmann at redhat.com>> wrote:
>
> +1 for AttachHandler!
>
> When I impl'd the TransitionAnchor I tried @PostConstruct to do just
> what you described, but obviously that didn't work. I didn't realize
> there was an attach handler capability.
>
> -Eric
>
> On 01/14/2013 08:02 PM, Lincoln Baxter, III wrote:
> > Hmm, yes. I think I like the idea of using the AttachHandler as well.
> > It's a bit cleaner and simpler. (From a framework perspective.)
> >
> >
> > On Mon, Jan 14, 2013 at 6:49 PM, Christian Sadilek
> <csadilek at redhat.com <mailto:csadilek at redhat.com>
> > <mailto:csadilek at redhat.com <mailto:csadilek at redhat.com>>> wrote:
> >
> > Hi,
> >
> > I really like the simplicity of our current "template wins"
> > strategy. I just tried the following which seems to work:
> >
> > In the constructor of TransitionAnchor (or any other widget
> for that
> > matter) you could add an AttachHandler and change the desired
> > attribute(s):
> >
> > MyWidget() {
> > addAttachHandler(new Handler() {
> > @Override
> > public void onAttachOrDetach(AttachEvent event) {
> > //change attributes
> > }
> > });
> > }
> >
> > e.g.
> >
> > TransitionAnchor(Navigation navigation, final Class<P> toPage) {
> > ...
> > addAttachHandler(new Handler() {
> > @Override
> > public void onAttachOrDetach(AttachEvent event) {
> > initHref(toPage);
> > }
> > });
> > }
> >
> > This causes the href attribute in the template to be
> overridden and
> > should work right away without changes to the framework. Eric, I
> > built a quick prototype which worked, but it needs more testing.
> >
> > The advantage of this programmatic solution is that it's flexible
> > and also becomes a widget-specific feature which won't add
> > complexity to the framework (no additional annotations
> required). Of
> > course, that argument only holds if we consider this
> requirement an
> > edge case, which I think it is. If this is a more common
> scenario we
> > could also add an @WidgetAttached annotation to get rid of the
> > AttachHandler boilerplate or implement the suggested
> @TemplateOverride.
> >
> > Cheers,
> > Christian
> >
> > On 2013-01-14, at 4:43 PM, "Lincoln Baxter, III"
> > <lincolnbaxter at gmail.com <mailto:lincolnbaxter at gmail.com>
> <mailto:lincolnbaxter at gmail.com <mailto:lincolnbaxter at gmail.com>>>
> wrote:
> >
> >> Rest of the Errai team, what do you think?
> >>
> >>
> >> On Fri, Jan 11, 2013 at 2:08 PM, Eric Wittmann
> >> <eric.wittmann at redhat.com <mailto:eric.wittmann at redhat.com>
> <mailto:eric.wittmann at redhat.com <mailto:eric.wittmann at redhat.com>>>
> wrote:
> >>
> >> I'd be favor of some annotations to control this aspect
> of the
> >> templates. I agree that care is needed, though. :)
> >>
> >> Certainly an @TemplateOverride annotation per widget can
> make
> >> sense. Perhaps the existing @Templated annotation can
> have an
> >> additional attribute?
> >>
> >> Simple set of global attributes that should be
> widget-favored:
> >>
> >> @Templated(
> >> value="artifacts.html#page",
> >> attributeOverrides={"href", "id", "src"})
> >>
> >> That will cause the href, id, and src attributes to be
> >> widget-favored rather than template-favored.
> >>
> >> Or a more advanced possibility:
> >>
> >> @Templated(value="artifacts.__html#page",
> >> attributeOverrides={"@href", "button at id", ".help-icon at src",
> >> "#breadcrumbs at class"})
> >>
> >> That will cause the following attributes to be
> widget-favored:
> >> * All href attributes
> >> * The id attribute on button elements
> >> * The src attribute on any element with class=help-icon
> >> * The class attribute on the element with id=breadcrumbs
> >>
> >> Support could exist only for the spec:
> >>
> >> <element>[.#]<classOrId>@<__attribute>
> >>
> >> -Eric
> >>
> >>
> >> On 01/11/2013 01:36 PM, Lincoln Baxter, III wrote:
> >>
> >> Maybe we need an @TemplateOverride annotation to alter
> >> this behavior?
> >>
> >> It wouldn't be hard to do. Though... we may want the
> >> ability to do more
> >> global overrides as well... for instance, maybe you want
> >> all href
> >> attributes to default to the widget value instead.
> >>
> >> Getting the experience of this right might be tricky.
> >>
> >> Thoughts?
> >>
> >> ---
> >> Lincoln Baxter's Droid
> >> http://ocpsoft.org <http://ocpsoft.org/>
> >> "Keep it Simple"
> >>
> >> On Jan 11, 2013 1:14 PM, "Eric Wittmann"
> >> <eric.wittmann at redhat.com
> <mailto:eric.wittmann at redhat.com> <mailto:eric.wittmann at redhat.com
> <mailto:eric.wittmann at redhat.com>>
> >> <mailto:eric.wittmann at redhat.
> <mailto:eric.wittmann at redhat.>__com
> >> <mailto:eric.wittmann at redhat.com
> <mailto:eric.wittmann at redhat.com>>>> wrote:
> >>
> >> No worries, Lincoln. Good luck with the Forge
> stuff. :)
> >>
> >> As for the remaining attribute issue, I came up with
> >> an acceptable
> >> workaround. As I mentioned in the pull request, I
> >> want the live
> >> preview/templates to be as functional as possible,
> >> including the
> >> ability to navigate around the different pages
> >> (statically when that
> >> makes sense - e.g. a primary nav bar). So I want to
> >> have "href"
> >> attributes that work in the templates. At the same
> >> time, I want the
> >> application to have the right value set on the href.
> >>
> >> Since the template code favors attributes in the
> >> template (and I
> >> agree it almost always should!) I figured I had two
> >> options. Either
> >> modify the templating code to *sometimes* prefer
> >> widget attributes
> >> over template attributes, or else find a way to
> remove
> >> the href
> >> attributes from the template.
> >>
> >> I thought about a "data-exclude-attributes"
> attribute
> >> in the
> >> template, but that didn't feel right.
> >>
> >> Instead, I simply removed all the hrefs from my
> >> template and
> >> replaced them with a tiny bit of on-document-load
> >> javascript that
> >> inserts them. This way, when the file is used as an
> >> Errai template,
> >> there's no 'href' attribute to get in the way.
> At the
> >> same time,
> >> when viewed directly in the browser, the templates
> >> still appear to
> >> have valid hrefs (because they get added by my
> little
> >> bit of JS code).
> >>
> >> Seems like a reasonable workaround, assuming there
> >> aren't too many
> >> static links. And I think in my applications there
> >> won't be too many.
> >>
> >> -Eric
> >>
> >>
> >> On 01/11/2013 12:22 PM, Lincoln Baxter wrote:
> >>
> >> Hey Eric,
> >>
> >> Thanks for getting in touch!
> >>
> >> I'm sorry it took me so long to respond,
> I've been
> >> in fire
> >> fighting mode trying to get Forge ready for our
> >> big team meeting.
> >>
> >> I've also copied my preferred email address and
> >> the errai-dev
> >> list, which are two places that will
> probably get
> >> a faster
> >> response from me, since I don't always have
> access
> >> to the VPN :)
> >>
> >> The issue has already been resolved, but I agree
> >> with all of
> >> your changes. The attribute "whacking" can be
> >> problematic if you
> >> actually want to go the "other way."
> >>
> >> Sorry again for the late reply. Feel free to
> email
> >> me personally
> >> (at home) and copy the dev list for best
> results :)
> >>
> >> Thanks!
> >> ~Lincoln
> >>
> >> ----- Original Message -----
> >> From: "Eric Wittmann"
> <eric.wittmann at redhat.com <mailto:eric.wittmann at redhat.com>
> >> <mailto:eric.wittmann at redhat.com
> <mailto:eric.wittmann at redhat.com>>
> >> <mailto:eric.wittmann at redhat.
> <mailto:eric.wittmann at redhat.>__com
> >> <mailto:eric.wittmann at redhat.com
> <mailto:eric.wittmann at redhat.com>>>>
> >> To: "Lincoln Baxter" <lbaxter at redhat.com
> <mailto:lbaxter at redhat.com>
> >> <mailto:lbaxter at redhat.com <mailto:lbaxter at redhat.com>>
> >> <mailto:lbaxter at redhat.com
> <mailto:lbaxter at redhat.com>
> >> <mailto:lbaxter at redhat.com
> <mailto:lbaxter at redhat.com>>>>, jfuerth at redhat.com
> <mailto:jfuerth at redhat.com>
> >> <mailto:jfuerth at redhat.com <mailto:jfuerth at redhat.com>>
> >> <mailto:jfuerth at redhat.com
> <mailto:jfuerth at redhat.com>
> >> <mailto:jfuerth at redhat.com <mailto:jfuerth at redhat.com>>>
> >> Sent: Wednesday, January 2, 2013 1:31:03 PM
> >> Subject: Errai navigation + templating
> discussion
> >>
> >> Hey Lincoln. I'm in the JBoss middleware group,
> >> specifically
> >> working on
> >> the Overlord project. One of my
> responsibilities
> >> is producing a
> >> couple
> >> of UI applications. To that end, I've been
> >> digging Errai and
> >> hope to
> >> contribute back based on my project needs.
> >>
> >> Ok, that's out of the way. :) I've been
> >> discussing a couple of
> >> Errai 3
> >> features with Jonathan (via github pull request
> >> comments :)).
> >> One of
> >> these is a new injectable Transition widget in
> >> errai-navigation.
> >> You
> >> can see the pull request here:
> >>
> >> https://github.com/errai/____errai/pull/27
> >> <https://github.com/errai/__errai/pull/27>
> >>
> >> <https://github.com/errai/__errai/pull/27
> >> <https://github.com/errai/errai/pull/27>>
> >>
> >> The goal was to really take out a lot of the
> >> boilerplate for the
> >> simple
> >> case of static hyperlinks from one @Page to
> another.
> >>
> >> I think it works well except for one small issue
> >> (documented in the
> >> "What's Missing" section of the pull request).
> >>
> >> Jonathan mentioned that you might have some
> >> thoughts about the
> >> templating issue, as it relates to attribute
> priority.
> >>
> >> Any thoughts? I'd like the href to be preserved
> >> in this case
> >> because I
> >> would like the template's href to point to some
> >> local HTML file
> >> while
> >> the live application uses the proper history
> token
> >> as the href.
> >>
> >> Thanks!
> >>
> >> -Eric
> >>
> >>
> >>
> >>
> >> --
> >> Lincoln Baxter, III
> >> http://ocpsoft.org <http://ocpsoft.org/>
> >> "Simpler is better."
> >> _______________________________________________
> >> errai-dev mailing list
> >> errai-dev at lists.jboss.org <mailto:errai-dev at lists.jboss.org>
> <mailto:errai-dev at lists.jboss.org <mailto:errai-dev at lists.jboss.org>>
> >> https://lists.jboss.org/mailman/listinfo/errai-dev
> >
> >
> > _______________________________________________
> > errai-dev mailing list
> > errai-dev at lists.jboss.org <mailto:errai-dev at lists.jboss.org>
> <mailto:errai-dev at lists.jboss.org <mailto:errai-dev at lists.jboss.org>>
> > https://lists.jboss.org/mailman/listinfo/errai-dev
> >
> >
> >
> >
> > --
> > Lincoln Baxter, III
> > http://ocpsoft.org
> > "Simpler is better."
> >
> >
> > _______________________________________________
> > errai-dev mailing list
> > errai-dev at lists.jboss.org <mailto:errai-dev at lists.jboss.org>
> > https://lists.jboss.org/mailman/listinfo/errai-dev
> >
> _______________________________________________
> errai-dev mailing list
> errai-dev at lists.jboss.org <mailto:errai-dev at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/errai-dev
>
>
>
>
> --
> Lincoln Baxter, III
> http://ocpsoft.org
> "Simpler is better."
>
>
> _______________________________________________
> errai-dev mailing list
> errai-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/errai-dev
>
More information about the errai-dev
mailing list