List of usage examples for org.apache.wicket.model LoadableDetachableModel setObject
@Override public void setObject(final T object)
From source file:au.org.theark.disease.web.component.affection.form.DetailForm.java
License:Open Source License
@SuppressWarnings("unchecked") public void initialiseDetailForm() { initDiseaseDDC();/*from w w w. j a va 2 s.co m*/ initAffectionStatusDDC(); detachableModel = new LoadableDetachableModel<List<Position>>() { @Override protected List<Position> load() { List<Position> positions = iArkDiseaseService .getPositions(containerForm.getModelObject().getAffection()); return positions; } }; positionListEditor = new ListView<Position>("positionListEditor", detachableModel) { private static final long serialVersionUID = 1L; @Override protected void populateItem(final ListItem<Position> item) { final Position position = item.getModelObject(); if (position != null) { position_storage.put(item.getIndex(), position); } List<Gene> availableGenes = new ArrayList<Gene>(); if (containerForm.getModelObject().getAffection().getDisease() != null && containerForm.getModelObject().getAffection().getDisease().getGenes() != null) { availableGenes = new ArrayList<Gene>( containerForm.getModelObject().getAffection().getDisease().getGenes()); } final DropDownChoice<Gene> geneDDC = new DropDownChoice<Gene>("affection.disease.genes", new Model<Gene>(position.getGene()), availableGenes, new ChoiceRenderer<Gene>("name", "id")); geneDDC.add(new AjaxFormComponentUpdatingBehavior("onchange") { private static final long serialVersionUID = 1L; protected void onUpdate(AjaxRequestTarget target) { Gene selectedGene = iArkDiseaseService.getGeneByID(Long.parseLong(geneDDC.getValue())); positionDDC.setChoices(new ArrayList<Position>(selectedGene.getPositions())); target.add(positionDDC); } }); geneDDC.setOutputMarkupId(true); item.add(geneDDC); List<Position> availablePositions = new ArrayList<Position>(); if (geneDDC.getModelObject() != null) { availablePositions = new ArrayList<Position>(geneDDC.getModelObject().getPositions()); } LoadableDetachableModel<Position> positionModel = new LoadableDetachableModel<Position>(position) { @Override protected Position load() { return position; } }; if (position != null) { positionModel.setObject(position); } positionDDC = new DropDownChoice<Position>("affection.positions", positionModel, availablePositions, new ChoiceRenderer<Position>("name", "id")) { @Override protected void onBeforeRender() { if (geneDDC.getModelObject() != null && geneDDC.getModelObject().getId() != null && !geneDDC.getModelObject().getPositions().isEmpty()) { this.setChoices(new ArrayList<Position>(geneDDC.getModelObject().getPositions())); } if (this.getModelObject().getName() != null) { position_storage.put(item.getIndex(), this.getModelObject()); } super.onBeforeRender(); } }; positionDDC.setOutputMarkupId(true); positionDDC.add(new AjaxFormComponentUpdatingBehavior("onchange") { private static final long serialVersionUID = 1L; protected void onUpdate(AjaxRequestTarget target) { Position selectedPosition = positionDDC.getModelObject(); if (selectedPosition.getName() != null) { position_storage.put(item.getIndex(), selectedPosition); } } }); item.add(positionDDC); item.add(new AjaxDeleteButton(Constants.DELETE, new Model<String>("Are you sure?"), new Model<String>("Delete")) { private static final long serialVersionUID = 1L; protected void onDeleteConfirmed(AjaxRequestTarget target, Form<?> form) { try { //need to remove save containerform post position removal position_storage.remove(item.getIndex()); positionListEditor.getModelObject().remove(position); containerForm.getModelObject().setAffection(iArkDiseaseService .getAffectionByID(containerForm.getModelObject().getAffection().getId())); save(containerForm, target); target.add(dataViewPanel); deleteCompleted("Row '" + position.getName() + "' deleted successfully.", true); } catch (Exception e) { e.printStackTrace(); target.add(form); deleteCompleted("Error deleting row '" + position.getName() + "'. Row has data associated with it.", false); } } @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { onDeleteConfirmed(target, form); target.add(form); target.add(feedBackPanel); } }); item.add(new AttributeModifier(Constants.CLASS, new AbstractReadOnlyModel() { @Override public String getObject() { return (item.getIndex() % 2 == 1) ? Constants.EVEN : Constants.ODD; } })); } }; positionListEditor.setOutputMarkupId(true); newPositionBtn = new AjaxEditorButton(Constants.NEW) { private static final long serialVersionUID = 1L; @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(form); } @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { positionListEditor.getModelObject().add(new Position()); target.add(form); } }.setDefaultFormProcessing(false); arkCrudContainerVO.getDetailPanelFormContainer().add(newPositionBtn); PropertyModel<Date> recordDateModel = new PropertyModel<Date>(containerForm.getModel(), "affection.recordDate"); recordDateTxtFld = new DateTextField("recordDate", recordDateModel) { @Override protected void onBeforeRender() { this.setModel(new PropertyModel<Date>(containerForm.getModel(), "affection.recordDate")); super.onBeforeRender(); } }; ArkDatePicker recordDatePicker = new ArkDatePicker(); recordDatePicker.bind(recordDateTxtFld); recordDateTxtFld.add(recordDatePicker); AffectionCustomDataVO affectionCustomDataVO = new AffectionCustomDataVO(); affectionCustomDataVO.setCustomFieldDataList(new ArrayList<AffectionCustomFieldData>( cpModel.getObject().getAffection().getAffectionCustomFieldDataSets())); final CompoundPropertyModel<AffectionCustomDataVO> affectionCustomDataModel = new CompoundPropertyModel<AffectionCustomDataVO>( affectionCustomDataVO); dataViewPanel = new AffectionCustomDataDataViewPanel("dataViewPanel", affectionCustomDataModel) .initialisePanel( iArkCommonService.getUserConfig(Constants.CONFIG_CUSTOM_FIELDS_PER_PAGE).getIntValue()); customFieldForm = new AbstractCustomDataEditorForm<AffectionCustomDataVO>("customFieldForm", affectionCustomDataModel, feedBackPanel) { private static final long serialVersionUID = 1L; @Override public void onEditSave(AjaxRequestTarget target, Form<?> form) { for (AffectionCustomFieldData acfd : this.cpModel.getObject().getCustomFieldDataList()) { iArkDiseaseService.save(acfd); } } @Override public void onBeforeRender() { if (!isNew()) { this.setModelObject(new AffectionCustomDataVO(iArkDiseaseService .getAffectionCustomFieldData(containerForm.getModelObject().getAffection()))); } this.buttonsPanelWMC.setVisible(false); super.onBeforeRender(); } }.initialiseForm(); pageNavigator = new AjaxPagingNavigator("navigator", dataViewPanel.getDataView()) { @Override protected void onAjaxEvent(AjaxRequestTarget target) { target.add(customFieldForm.getDataViewWMC()); target.add(this); } }; pageNavigator.setOutputMarkupId(true); customFieldForm.getDataViewWMC().add(dataViewPanel); arkCrudContainerVO.getDetailPanelFormContainer().add(pageNavigator); attachValidators(); addDetailFormComponents(); deleteButton.setVisible(false); }