package org.nocket.gen.page.visitor.bind.builder; import java.io.File; import org.apache.wicket.Component; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.DownloadLink; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.nocket.gen.domain.visitor.html.styling.StylingFactory; import org.nocket.gen.domain.visitor.html.styling.common.ButtonBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.CheckBoxBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.DropDownBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.FeedbackPanelBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.FileUploadBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.ImageBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.LinkBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.ListMultipleChoiceBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.ModalWindowBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.PasswordTextFieldBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.RadioChoiceBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.RepeatingViewBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.TabbedPanelBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.TextAreaBuilderI; import org.nocket.gen.domain.visitor.html.styling.common.TextFieldBuilderI; import org.nocket.gen.page.element.ButtonElement; import org.nocket.gen.page.element.CheckboxInputElement; import org.nocket.gen.page.element.DivElement; import org.nocket.gen.page.element.FeedbackElement; import org.nocket.gen.page.element.FileDownloadElement; import org.nocket.gen.page.element.FileInputElement; import org.nocket.gen.page.element.FormElement; import org.nocket.gen.page.element.GroupTabbedPanelElement; import org.nocket.gen.page.element.ImageElement; import org.nocket.gen.page.element.LabelElement; import org.nocket.gen.page.element.LinkElement; import org.nocket.gen.page.element.ModalElement; import org.nocket.gen.page.element.PasswordInputElement; import org.nocket.gen.page.element.PromptElement; import org.nocket.gen.page.element.RadioInputElement; import org.nocket.gen.page.element.RepeatingPanelElement; import org.nocket.gen.page.element.SelectElement; import org.nocket.gen.page.element.TableElement; import org.nocket.gen.page.element.TextAreaElement; import org.nocket.gen.page.element.TextInputElement; import org.nocket.gen.page.element.UnknownPageElementI; import org.nocket.gen.page.visitor.bind.builder.components.GeneratedBeanValidationForm; import org.nocket.gen.page.visitor.bind.builder.components.GeneratedGenericDataTableFactory; public class DefaultBindingBuilder implements BindingBuilderI { @Override public Component createModal(ModalElement e) { ModalWindowBuilderI builder = StylingFactory.getStylingStrategy().getModalWindowBuilder(); builder.initModalWindowBuilder(e.getWicketId()); Panel modal = builder.getModalWindow(); return modal; } @Override public Component createFeedback(FeedbackElement e) { FeedbackPanelBuilderI builder = StylingFactory.getStylingStrategy().getFeedbackPanelBuilder(); builder.initFeedbackPanelBuilder(e.getWicketId()); FeedbackPanel feedback = builder.getFeedbackPanel(); feedback.setOutputMarkupId(true); return feedback; } @Override public Component createForm(FormElement e) { GeneratedBeanValidationForm<Object> form = new GeneratedBeanValidationForm<Object>(e.getContext(), e.getWicketId(), e.getModel()); form.setOutputMarkupId(true); return form; } @Override public Component createLabel(LabelElement e) { Label label = new Label(e.getWicketId(), e.getModel()); return label; } @Override public Component createPrompt(PromptElement e) { Label label = new Label(e.getWicketId(), e.getModel()); label.setEscapeModelStrings(false); return label; } @SuppressWarnings("rawtypes") @Override public Component createTextInput(TextInputElement e) { TextFieldBuilderI builder = StylingFactory.getStylingStrategy().getTextFieldBuilder(); builder.initTextFieldBuilder(e); return builder.getTextField(); } @Override public Component createFileInput(FileInputElement e) { FileUploadBuilderI builder = StylingFactory.getStylingStrategy().getFileUploadBuilder(); builder.initFileUploadBuilder(e.getWicketId()); return builder.getFileUploadField(); } @Override public Component createPasswordInput(PasswordInputElement e) { PasswordTextFieldBuilderI builder = StylingFactory.getStylingStrategy().getPasswordTextFieldBuilder(); builder.initPasswordTextFieldBuilder(e.getWicketId(), (IModel) e.getModel()); return builder.getPasswordField(); } @Override public Component createFileDownload(FileDownloadElement e) { IModel<File> model = e.getModel(); DownloadLink downloadLink = new DownloadLink(e.getWicketId(), model); return downloadLink; } @Override public Component createTextArea(TextAreaElement e) { TextAreaBuilderI builder = StylingFactory.getStylingStrategy().getTextAreaBuilder(); builder.initTextAreaBuilder(e.getWicketId(), e.getModel()); return builder.getTextArea(); } @Override public Component createCheckboxInput(CheckboxInputElement e) { CheckBoxBuilderI builder = StylingFactory.getStylingStrategy().getCheckBoxBuilder(); builder.initCheckBoxBuilder(e.getWicketId(), e.getModel()); return builder.getCheckBox(); } @Override public Component createRadioInput(RadioInputElement e) { RadioChoiceBuilderI builder = StylingFactory.getStylingStrategy().getRadioChoiceBuilder(); builder.initRadioChoiceBuilder(e.getWicketId(), e.getModel(), e.getChoicesModel(), e.getChoicesRenderer()); return builder.getRadioChoice(); } @Override public Component createImage(ImageElement e) { ImageBuilderI builder = StylingFactory.getStylingStrategy().getImageBuilder(); builder.initImageBuilder(e.getWicketId(), e.getModel()); return builder.getImage(); } @SuppressWarnings({ "unchecked" }) @Override public Component createLink(LinkElement e) { LinkBuilderI builder = StylingFactory.getStylingStrategy().getLinkBuilder(); builder.initLinkBuilder(e); return builder.getLink(); } @SuppressWarnings("unchecked") @Override public Component createSelect(SelectElement e) { if (!e.isMultiselect()) { DropDownBuilderI builder = StylingFactory.getStylingStrategy().getDropDownBuilder(); builder.initDropDownBuilder(e.getWicketId(), e.getModel(), e.getChoicesModel(), e.getChoicesRenderer()); return builder.getDropDown(); } else { ListMultipleChoiceBuilderI builder = StylingFactory.getStylingStrategy().getListMultipleChoiceBuilder(); builder.initMultipleChoiceBuilder(e.getWicketId(), e.getModel(), e.getChoicesModel()); return builder.getListMultipleChoice(); } } @Override public Component createTable(TableElement e) { return new GeneratedGenericDataTableFactory(e).createTable(); } @Override public Component createButton(final ButtonElement e) { ButtonBuilderI builder = StylingFactory.getStylingStrategy().getButtonBuilder(); builder.initButtonBuilder(e); return builder.getButton(); } @Override public Component createUnknown(UnknownPageElementI<?> e) { return null; } @Override public Component createListView(RepeatingPanelElement e) { RepeatingViewBuilderI builder = StylingFactory.getStylingStrategy().getRepeatingViewBuilder(); builder.initRepeatingViewBuilder(e.getWicketId(), e.getModel()); return builder.getRepeatingView(); } @Override public Component createGroupTabbedPanel(GroupTabbedPanelElement e) { TabbedPanelBuilderI builder = StylingFactory.getStylingStrategy().getTabbedPanelBuilder(); builder.initTabbedPanelBuilder(e); return builder.getTabbedPanel(); } @Override public Component createDiv(DivElement e) { WebMarkupContainer div = new WebMarkupContainer(e.getWicketId()); return div; } }