package forscher.nocket.page.gen; import org.apache.wicket.AttributeModifier; import org.apache.wicket.Component; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.nocket.component.form.behaviors.DefaultFocusBehavior; import org.nocket.gen.page.GeneratedBinding; import org.nocket.gen.page.element.PageElementI; import org.nocket.gen.page.element.TableElement; import org.nocket.gen.page.inject.PageComponent; import org.nocket.gen.page.visitor.bind.builder.BindingInterceptor; import org.nocket.gen.page.visitor.bind.builder.components.GeneratedGenericDataTableFactory; import org.nocket.gen.page.visitor.bind.builder.components.GeneratedNumberTextField; import forscher.nocket.page.ForscherPage; @SuppressWarnings("serial") public class GeneratedPage extends ForscherPage { private static final String ID_SEPERATE_FORM = "seperateForm"; private static final String ID_SOMETHING_UNKNOWN = "somethingUnknown"; private static final String ID_FILE_DOWNLOAD = "Download"; @PageComponent(GeneratedConstants.Merge_IchBinDasSelbeFeldReadOnly) private Component readOnlyComponent; @PageComponent(GeneratedConstants.Credential) private FormComponent credential; private Component Merge_IchBinDasSelbeFeldDasZweiteMalReadOnly; private GeneratedNumberTextField<Integer> blueValue = new GeneratedNumberTextField<Integer>( GeneratedConstants.BlueValue) { @Override protected void onComponentTag(ComponentTag tag) { super.onComponentTag(tag); Integer value = (Integer) getDefaultModelObject(); if (value != null) { tag.put("style", "font-weight:bold;color:rgb(0, 0," + value + ")"); } } }; public GeneratedPage() { this(Model.of(new Generated())); } public GeneratedPage(final IModel<Generated> model) { super(model); GeneratedBinding generatedBinding = new GeneratedBinding(this); generatedBinding.withInterceptors(new BindingInterceptor() { @Override public Component create(PageElementI<?> e) { // add custom component if (e.getWicketId().equals(ID_SOMETHING_UNKNOWN)) { Label label = new Label(e.getWicketId(), "Mapped Unknown Label"); return label; } if (e.getWicketId().equals(ID_SEPERATE_FORM)) { return new GeneratedSeperatedFormPanel(ID_SEPERATE_FORM, Model.of(new GeneratedSeperatedForm())); } return null; } @Override public Component createTable(TableElement e) { return new GeneratedGenericDataTableFactory(e).withRowsPerPage(2).createTable(); } }); generatedBinding.bind(); // fetch and modify custom component later Label somethingUnknownLabel = (Label) generatedBinding.getContext().getComponentRegistry() .getComponent(ID_SOMETHING_UNKNOWN); somethingUnknownLabel.add(new AttributeModifier("style", "color: green; font-size: 200%")); readOnlyComponent.add(new AttributeModifier("style", "border-style: solid; border-color: red;")); Merge_IchBinDasSelbeFeldDasZweiteMalReadOnly.add(new AttributeModifier("style", "border-style: solid; border-color: orange;")); generatedBinding.getContext().getComponentRegistry().getComponent(GeneratedConstants.RadioChoiceNullable) .add(new DefaultFocusBehavior()); credential.setRequired(false); } }