THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Composite behavior, first attempt
A solution is to use the composite design pattern and create a composite behavior is fairly easy to implement. .
This can be done as follows:
No Format |
---|
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import wicket.Component; import wicket.Response; import wicket.behavior.IBehavior; import wicket.markup.ComponentTag; import wicket.markup.html.IHeaderContributor; /** * Represents a composite behavior allowing the user to attach multiple behaviors to a * component at once. * */ public class CompositeBehavior implements IBehavior, IHeaderContributor { private List<IBehavior> _behaviors; public CompositeBehavior(IBehavior[] aBehaviors) { _behaviors = new ArrayList<IBehavior>(Arrays.asList(aBehaviors)); } public void add(IBehavior aBehavior) { _behaviors.add(aBehavior); } public void bind(Component aComponent) { for (IBehavior behavior: _behaviors) { behavior.bind(aComponent); } } public void detachModel(Component aComponent) { for (IBehavior behavior: _behaviors) { behavior.detachModel(aComponent); } } public void exception(Component aComponent, RuntimeException aException) { for (IBehavior behavior: _behaviors) { behavior.exception(aComponent, aException); } } public void onComponentTag(Component aComponent, ComponentTag aTag) { for (IBehavior behavior: _behaviors) { behavior.onComponentTag(aComponent, aTag); } } public void rendered(Component aComponent) { for (IBehavior behavior: _behaviors) { behavior.rendered(aComponent); } } public void renderHead(Response aResponse) { for (IBehavior behavior: _behaviors) { if ( behavior instanceof IHeaderContributor) { ((IHeaderContributor)behavior).renderHead(aResponse); } } } } |
...