@SuppressWarnings("serial") public void redraw() { clearContent(); { gridBuilder.newSecurityAdviceBox(Model.of(getString("calendar.icsExport.securityAdvice"))); addFormFields(); final FieldsetPanel fs = gridBuilder.newFieldset(getString("calendar.abonnement.url")).setLabelSide(false); urlTextArea = new TextArea<String>( fs.getTextAreaId(), new Model<String>() { @Override public String getObject() { return WicketUtils.getAbsoluteContextPath() + getUrl(); }; }); urlTextArea.setOutputMarkupId(true); fs.add(urlTextArea); urlTextArea.add(AttributeModifier.replace("onClick", "$(this).select();")); } }
@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(); } }