@SuppressWarnings("serial") @Override protected void init() { super.init(); add( new IFormValidator() { @Override public FormComponent<?>[] getDependentFormComponents() { return dependentFormComponents; } @SuppressWarnings("unchecked") @Override public void validate(final Form<?> form) { final PFAutoCompleteTextField<SkillDO> skillTextField = (PFAutoCompleteTextField<SkillDO>) dependentFormComponents[0]; final DropDownChoice<SkillRating> skillRatingDropDown = (DropDownChoice<SkillRating>) dependentFormComponents[1]; if (skillTextField.getConvertedInput().isRateable() == true && skillRatingDropDown.getConvertedInput() == null) { error(getString("plugins.skillmatrix.error.rateableSkillWithNullRating")); } else if (skillTextField.getConvertedInput().isRateable() == false && skillRatingDropDown.getConvertedInput() != null) { error(getString("plugins.skillmatrix.error.unrateableSkillWithRating")); } final SkillRatingFilter filter = new SkillRatingFilter(); filter.setSearchFields("user.username"); filter.setSearchString(data.getUser().getUsername()); final List<SkillRatingDO> list = skillRatingDao.getList(filter); for (final SkillRatingDO skillRatingDO : list) { final boolean isDeleted = skillRatingDO.getSkill().isDeleted(); final boolean sameSkill = skillRatingDO.getSkill().getTitle() == skillTextField.getConvertedInput().getTitle(); final boolean sameSkillRating = skillRatingDO.getCreated().equals(data.getCreated()); if (isDeleted == false && sameSkill && sameSkillRating == false) { error(getString("plugins.skillmatrix.error.skillRatingExistsAlready")); break; } } } }); gridBuilder.newGridPanel(); { // User final FieldsetPanel fs = gridBuilder .newFieldset(getString("plugins.skillmatrix.skillrating.user")) .suppressLabelForWarning(); final DivTextPanel username = new DivTextPanel(fs.newChildId(), data.getUser().getUsername()); username.setStrong(); fs.add(username); } { // Skill, look at UserSelectPanel for fine tuning ( getConverter() ) final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.skill")); final PFAutoCompleteTextField<SkillDO> autoCompleteTextField = new PFAutoCompleteTextField<SkillDO>( fs.getTextFieldId(), new PropertyModel<SkillDO>(data, "skill")) { @Override protected List<SkillDO> getChoices(final String input) { final BaseSearchFilter filter = new BaseSearchFilter(); filter.setSearchFields("title"); filter.setSearchString(input); final List<SkillDO> list = skillDao.getList(filter); return list; } @Override protected String formatLabel(final SkillDO skill) { if (skill == null) { return ""; } return skill.getTitle(); } @Override protected String formatValue(final SkillDO skill) { if (skill == null) { return ""; } return skill.getTitle(); } @SuppressWarnings({"unchecked", "rawtypes"}) @Override public <C> IConverter<C> getConverter(final Class<C> type) { return new IConverter() { @Override public Object convertToObject(final String value, final Locale locale) { if (StringUtils.isEmpty(value) == true) { getModel().setObject(null); return null; } final SkillDO skill = skillDao.getSkillTree().getSkill(value); if (skill == null) { error(getString("plugins.skillmatrix.error.skillNotFound")); } getModel().setObject(skill); final AjaxRequestTarget target = RequestCycle.get().find(AjaxRequestTarget.class); if (target != null) { target.add(SkillRatingEditForm.this.fs.getFieldset()); } return skill; } @Override public String convertToString(final Object value, final Locale locale) { if (value == null) { return ""; } final SkillDO skill = (SkillDO) value; return skill.getTitle(); } }; } }; autoCompleteTextField .withLabelValue(true) .withMatchContains(true) .withMinChars(2) .withAutoSubmit(false) .withWidth(400) .setRequired(true); autoCompleteTextField.add( new AjaxFormComponentUpdatingBehavior("onChange") { @Override protected void onUpdate(final AjaxRequestTarget target) { // AjaxRequestTarget needs this. } }); fs.add(autoCompleteTextField); dependentFormComponents[0] = autoCompleteTextField; } { // Skill rating fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.rating")); fs.getFieldset().setOutputMarkupId(true); final LabelValueChoiceRenderer<SkillRating> ratingChoiceRenderer = new LabelValueChoiceRenderer<SkillRating>(this, SkillRating.values()); final DropDownChoicePanel<SkillRating> skillChoice = new DropDownChoicePanel<SkillRating>( fs.newChildId(), new PropertyModel<SkillRating>(data, "skillRating"), ratingChoiceRenderer.getValues(), ratingChoiceRenderer) { @Override public boolean isVisible() { if (data == null || data.getSkill() == null || !data.getSkill().isRateable()) { return false; } else { return true; } } }; fs.add(skillChoice); dependentFormComponents[1] = skillChoice.getDropDownChoice(); } { // Since year final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.sinceyear")); fs.add( new MinMaxNumberField<Integer>( fs.getTextFieldId(), new PropertyModel<Integer>(data, "sinceYear"), 0, 9000)); } { // Certificates final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.certificates")); fs.add( new MaxLengthTextField( fs.getTextFieldId(), new PropertyModel<String>(data, "certificates"))); } { // Training courses final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.trainingcourses")); fs.add( new MaxLengthTextField( fs.getTextFieldId(), new PropertyModel<String>(data, "trainingCourses"))); } { // Description final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.description")); fs.add( new MaxLengthTextArea( fs.getTextAreaId(), new PropertyModel<String>(data, "description"))) .setAutogrow(); } { // Comment final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.skillmatrix.skillrating.comment")); fs.add(new MaxLengthTextArea(fs.getTextAreaId(), new PropertyModel<String>(data, "comment"))) .setAutogrow(); } }
@Override protected void init() { super.init(); // GRID 50% - BLOCK gridBuilder.newSplitPanel(GridSize.COL50); { // Number final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.number")); fs.add(new DivTextPanel(fs.newChildId(), "C-")); numberField = new MinMaxNumberField<Integer>( InputPanel.WICKET_ID, new PropertyModel<Integer>(data, "number"), 0, 99999999); numberField.setMaxLength(8); WicketUtils.setSize(numberField, 6); fs.add(numberField); if (NumberHelper.greaterZero(getData().getNumber()) == false) { fs.addHelpIcon(getString("fibu.tooltip.nummerWirdAutomatischVergeben")); } } { // Date final FieldsetPanel fs = gridBuilder.newFieldset(getString("date")); datePanel = new DatePanel( fs.newChildId(), new PropertyModel<Date>(data, "date"), DatePanelSettings.get().withTargetType(java.sql.Date.class)); fs.add(datePanel); } { // Title final FieldsetPanel fs = gridBuilder.newFieldset(getString("title")); fs.add(createAutocompleteTextField("title")) .getField() .setRequired(true) .add(WicketUtils.setFocus()); } { // Contract type final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.type")); final List<ContractType> contractTypes = ConfigXml.getInstance().getContractTypes(); final LabelValueChoiceRenderer<ContractType> typeChoiceRenderer = new LabelValueChoiceRenderer<ContractType>(contractTypes); final DropDownChoice<ContractType> typeChoice = new DropDownChoice<ContractType>( fs.getDropDownChoiceId(), new PropertyModel<ContractType>(data, "type"), typeChoiceRenderer.getValues(), typeChoiceRenderer); typeChoice.setNullValid(false); fs.add(typeChoice); } { // Status final FieldsetPanel fs = gridBuilder.newFieldset(getString("status")); // DropDownChoice for convenient selection of time periods. final LabelValueChoiceRenderer<String> statusChoiceRenderer = new LabelValueChoiceRenderer<String>(); for (final ContractStatus status : ContractStatus.values()) { statusChoiceRenderer.addValue(status.name(), getString(status.getI18nKey())); } final DropDownChoice<String> statusChoice = new DropDownChoice<String>( fs.getDropDownChoiceId(), new PropertyModel<String>(data, "status"), statusChoiceRenderer.getValues(), statusChoiceRenderer); statusChoice.setNullValid(false); fs.add(statusChoice); } gridBuilder.newSplitPanel(GridSize.COL50); { // Reference final FieldsetPanel fs = gridBuilder.newFieldset(getString("fibu.common.reference")); fs.add( new MaxLengthTextField( InputPanel.WICKET_ID, new PropertyModel<String>(data, "reference"))); } { // Resubmission date final FieldsetPanel fs = gridBuilder.newFieldset(getString("resubmissionOnDate")); resubmissionDatePanel = new DatePanel( fs.newChildId(), new PropertyModel<Date>(data, "resubmissionOnDate"), DatePanelSettings.get().withTargetType(java.sql.Date.class)); fs.add(resubmissionDatePanel); } { // Due date final FieldsetPanel fs = gridBuilder.newFieldset(getString("dueDate")); dueDatePanel = new DatePanel( fs.newChildId(), new PropertyModel<Date>(data, "dueDate"), DatePanelSettings.get().withTargetType(java.sql.Date.class)); fs.add(dueDatePanel); } { // Signing date final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.signing"), getString("date")); signingDatePanel = new DatePanel( fs.newChildId(), new PropertyModel<Date>(data, "signingDate"), DatePanelSettings.get().withTargetType(java.sql.Date.class)); fs.add(signingDatePanel); } { // Validity final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.validity")); validFromDatePanel = new DatePanel( fs.newChildId(), new PropertyModel<Date>(data, "validFrom"), DatePanelSettings.get().withTargetType(java.sql.Date.class)); fs.add(validFromDatePanel); fs.add(new DivTextPanel(fs.newChildId(), "-")); validUntilDatePanel = new DatePanel( fs.newChildId(), new PropertyModel<Date>(data, "validUntil"), DatePanelSettings.get().withTargetType(java.sql.Date.class)); fs.add(validUntilDatePanel); } gridBuilder.newSplitPanel(GridSize.COL50); { // CocontractorA final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.coContractorA")); fs.add(createAutocompleteTextField("coContractorA")); } { // CopersonA final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.contractPersonA")); fs.add(createAutocompleteTextField("contractPersonA")); } { // SignerA final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.signerA")); fs.add(createAutocompleteTextField("signerA")); } /* GRID8 */ gridBuilder.newSplitPanel(GridSize.COL50); { // CocontractorB final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.coContractorB")); fs.add(createAutocompleteTextField("coContractorB")); } { // CopersonB final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.contractPersonB")); fs.add(createAutocompleteTextField("contractPersonB")); } { // SignerB final FieldsetPanel fs = gridBuilder.newFieldset(getString("legalAffaires.contract.signerB")); fs.add(createAutocompleteTextField("signerB")); } /* GRID16 */ gridBuilder.newGridPanel(); { // Text with JIRA support final FieldsetPanel fs = gridBuilder.newFieldset(getString("text")); final IModel<String> model = new PropertyModel<String>(data, "text"); fs.add(new MaxLengthTextArea(TextAreaPanel.WICKET_ID, model)); fs.addJIRAField(model); } { // Filing final FieldsetPanel fs = gridBuilder.newFieldset(getString("filing")); fs.add( new MaxLengthTextField(InputPanel.WICKET_ID, new PropertyModel<String>(data, "filing"))); } addCloneButton(); }
@SuppressWarnings("serial") @Override protected void init() { super.init(); /* GRID16 - BLOCK */ gridBuilder.newGridPanel(); { // Number final FieldsetPanel fs = gridBuilder.newFieldset(getString("fibu.kunde.nummer")); final MinMaxNumberField<Integer> number = new MinMaxNumberField<Integer>( InputPanel.WICKET_ID, new PropertyModel<Integer>(data, "id"), 0, KundeDO.MAX_ID) { @SuppressWarnings({"unchecked", "rawtypes"}) @Override public IConverter getConverter(final Class type) { return new IntegerConverter(3); } }; WicketUtils.setSize(number, 7); fs.add(number); if (isNew() == true) { WicketUtils.setFocus(number); } } { // Name final FieldsetPanel fs = gridBuilder.newFieldset(getString("fibu.kunde.name")); final RequiredMaxLengthTextField name = new RequiredMaxLengthTextField( InputPanel.WICKET_ID, new PropertyModel<String>(data, "name")); fs.add(name); if (isNew() == false) { WicketUtils.setFocus(name); } } if (Registry.instance().getKontoCache().isEmpty() == false) { // Show this field only if DATEV accounts does exist. final FieldsetPanel fs = gridBuilder.newFieldset(getString("fibu.konto")); final KontoSelectPanel kontoSelectPanel = new KontoSelectPanel( fs.newChildId(), new PropertyModel<KontoDO>(data, "konto"), null, "kontoId"); kontoSelectPanel .setKontoNumberRanges(AccountingConfig.getInstance().getDebitorsAccountNumberRanges()) .init(); fs.addHelpIcon(getString("fibu.kunde.konto.tooltip")); fs.add(kontoSelectPanel); } { // Identifier final FieldsetPanel fs = gridBuilder.newFieldset(getString("fibu.kunde.identifier")); fs.add( new MaxLengthTextField( InputPanel.WICKET_ID, new PropertyModel<String>(data, "identifier"))); } { // Identifier final FieldsetPanel fs = gridBuilder.newFieldset(getString("fibu.kunde.division")); fs.add( new MaxLengthTextField( InputPanel.WICKET_ID, new PropertyModel<String>(data, "division"))); } { // Identifier final FieldsetPanel fs = gridBuilder.newFieldset(getString("description")); fs.add( new MaxLengthTextArea( TextAreaPanel.WICKET_ID, new PropertyModel<String>(data, "description"))); } { // Status drop down box: final FieldsetPanel fs = gridBuilder.newFieldset(getString("status")); final LabelValueChoiceRenderer<KundeStatus> statusChoiceRenderer = new LabelValueChoiceRenderer<KundeStatus>(fs, KundeStatus.values()); final DropDownChoice<KundeStatus> statusChoice = new DropDownChoice<KundeStatus>( fs.getDropDownChoiceId(), new PropertyModel<KundeStatus>(data, "status"), statusChoiceRenderer.getValues(), statusChoiceRenderer); statusChoice.setNullValid(false).setRequired(true); fs.add(statusChoice); } }
/** * Mobile is false because AbstractEditForm is not a mobile form. * * @param form */ public LayoutContext(final AbstractEditForm<?, ?> form) { this.newObject = form.isNew(); }