Hi Dilshan,

You don't quite have this right.

It's still necessary to annotate the view model with @DomainObjectLayout,
and optionally to specify a titleUiEvent, eg [1]

The event subscriber then checks for the event on the JAXB view model, eg
[2]

If you didn't want to annotate the JAXB view model with
@DomainObjectLayout, then you could instead write a custom facet factory
that looked for the JAXB @XmlRootElement and did the same job; details in
[3].  I've raised ISIS-1337 for this idea [4]

HTH
Dan


[1]
https://github.com/isisaddons/isis-app-todoapp/blob/master/dom/src/main/java/todoapp/app/viewmodels/todoitem/v1/ToDoItemV1_1.java#L43
[2]
https://github.com/isisaddons/isis-app-todoapp/blob/master/app/src/main/java/todoapp/app/services/titlesubscriber/UiEventSubscriber.java#L41
[3] http://isis.apache.org/guides/ugbtb.html#_modifying_the_prog_model
[4] https://issues.apache.org/jira/browse/ISIS-1337



On 2 March 2016 at 09:55, Shan Wijesinghe <shandwijesin...@gmail.com> wrote:

> * Please ignore the mismatch between the Myclass_viewmodel and it's
> constructor named as TrsItem_ViewModelTrs
>
> On Wed, Mar 2, 2016 at 3:18 PM, Shan Wijesinghe <shandwijesin...@gmail.com
> >
> wrote:
>
> > Thank you for the information Dan.
> >
> > I did the following. But it seems title is not set still. What is the
> > problem.
> >
> > // Mixin
> >
> > @DomainObject(nature = Nature.MIXIN)
> > @DomainObjectLayout(titleUiEvent = Myclass_viewmodel.TitleUiEvent.class)
> > public class Myclass_viewmodel {
> >
> > private final Myclass myclass;
> >
> > public TrsItem_ViewModelTrs(Myclass myclass) {
> >
> > this.myclass  = myclass ;
> > }
> > ...
> >
> >
> >
> > public static class TitleUiEvent extends
> > org.apache.isis.applib.services.eventbus.TitleUiEvent<Myclass_viewmodel>
> {
> >
> > protected String title ;
> > public String getTitle() {
> > return title ;
> > }
> >
> > public void setTitle(String title) {
> > this.title = title ;
> > }
> > public TitleUiEvent() {
> >
> > }
> > }
> >
> > }
> >
> >
> > // Subscriber
> >
> >
> > @DomainService(nature=NatureOfService.DOMAIN)
> > public class MyclassTitle extends AbstractSubscriber{
> > @com.google.common.eventbus.Subscribe
> >    public void on(TitleUiEvent ev) {
> >        if(ev.getSource() instanceof Myclass_viewmodel) {
> >
> >         ev.setTitle("MY TITLE");
> >
> >        }
> >    }
> >
> > }
> >
> >
> > On Wed, Mar 2, 2016 at 12:53 PM, Dan Haywood <
> d...@haywood-associates.co.uk
> > > wrote:
> >
> >> The easiest approach is probably to use the UiEvent classes defined in
> >> @DomainObjectLayout, and then set up a subscriber of these events.
> >>
> >> HTH, Dan
> >> On 2 Mar 2016 07:03, "Shan Wijesinghe" <shandwijesin...@gmail.com>
> wrote:
> >>
> >> > Hi all,
> >> >
> >> >    I have a JAXB annotated view model. I want to change "title" and
> >> > "iconName" using a Mixin to my original java class without adding
> title
> >> > and iconName methods to original class. How can I do this. Please make
> >> > suggestions. Thanks in advance.
> >> >
> >> > --regards
> >> > Dilshan.
> >> >
> >>
> >
> >
>

Reply via email to