We are attempting to control whether the icon next to a title is visible or not 
through a property of an entity. We couldn't figure out a simple way to do it 
by reading the documentation or looking through the list of possible 
annotations, and so we proceeded to try and override the 
addOrReplaceLinkWrapper method of the EntityIconAndTitlePanel container. 

We first tried to subclass it, but the needed method was private so we just 
copied the entire class, created a ComponentFactory for it, and did a 
componentFactories.replace(EntityIconAndTitlePanelFactory.class, new 
EntityIconAndTitlePanelFactoryImproved()) inside of addComponentFactories of 
ComponentFactoryRegistrarForQuickStart. This failed when we went to list our 
entities, so we took out our changes so that the new class 
(EntityIconAndTitleImproved) was exactly the same as the old 
(EntityIconAndTitle). It was still being constructed by our new Factory, and 
our new factory is exactly the same as the old with the exception that it 
constructs the "Improved" class instead of the original inside of 
createComponent. But it still had the same error. So then we had our new 
factory construct the old component instead (EntityIconAndTitlePanel), and it 
worked perfectly fine. So apparently replacing the old component with the new 
creates this error, even though the new class is identical to the old (except 
for the class name and package). 

So I have two questions. First, is there an easier way to disable the rendering 
of an icon next to the title of an entity? Second, how do we correctly override 
a component factory? 

As a side note, we did succeed in removing the annoying (to us anyway ;) ) 
bookmark slide out panel by doing a componentFactories.replace using a 
subclassed BookmarkedPagesPanelFactory, where createComponent just returns a 
dummy component. There's probably an easier way to do this too. 

We are running the latest git code on the master branch using a project based 
on the example/application/quickstart_wicket_restful_jdo/.

Here's the stack trace that results from listing our entities:

org.apache.wicket.markup.MarkupNotFoundException
Failed to find markup file associated. EntityIconAndTitlePanelImprovedIcon: 
[EntityIconAndTitlePanelImprovedIcon [Component id = entityIconAndTitle]]
org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy#getMarkup(AssociatedMarkupSourcingStrategy.java:97)
org.apache.wicket.MarkupContainer#getMarkup(MarkupContainer.java:451)
org.apache.wicket.MarkupContainer#renderAssociatedMarkup(MarkupContainer.java:654)
org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy#renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:76)
org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy#onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
org.apache.wicket.Component#internalRenderComponent(Component.java:2549)
org.apache.wicket.MarkupContainer#onRender(MarkupContainer.java:1493)
org.apache.wicket.Component#internalRender(Component.java:2379)
org.apache.wicket.Component#render(Component.java:2307)
org.apache.wicket.MarkupContainer#renderNext(MarkupContainer.java:1390)
org.apache.wicket.MarkupContainer#renderAll(MarkupContainer.java:1554)
org.apache.wicket.MarkupContainer#renderComponentTagBody(MarkupContainer.java:1529)
org.apache.wicket.MarkupContainer#renderAssociatedMarkup(MarkupContainer.java:689)
org.apache.wicket.markup.html.panel.AssociatedMarkupSourcingStrategy#renderAssociatedMarkup(AssociatedMarkupSourcingStrategy.java:76)
org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy#onComponentTagBody(PanelMarkupSourcingStrategy.java:112)
org.apache.wicket.Component#internalRenderComponent(Component.java:2549)
org.apache.wicket.MarkupContainer#onRender(MarkupContainer.java:1493)
org.apache.wicket.Component#internalRender(Component.java:2379)
org.apache.wicket.Component#render(Component.java:2307)
org.apache.wicket.MarkupContainer#renderNext(MarkupContainer.java:1390)
org.apache.wicket.MarkupContainer#renderAll(MarkupContainer.java:1554)
org.apache.wicket.MarkupContainer#renderComponentTagBody(MarkupContainer.java:1529)
org.apache.wicket.MarkupContainer#onComponentTagBody(MarkupContainer.java:1484) 

thank you for your time,

Jeremy

Reply via email to