/** * Returns a localized message string, if there is a localization; otherwise the given default * value. * * @param key message key for the message * @param defaultValue to use if no localization for the message can be found * @return the possibly localized message */ private String getMsg(String key, String defaultValue) { if (Application.exists()) { Localizer localizer = Application.get().getResourceSettings().getLocalizer(); if (localizer != null) { // Use getStringIgnoreSettings because we don't want exceptions here if the key is missing! return localizer.getStringIgnoreSettings(key, null, null, defaultValue); } } return defaultValue; }
/** * Construct a new YUIDateField. * * @param id the Wicket id for the editor. * @param model the model. * @param metaData the meta data for the property. * @param viewOnly true if the component should be view-only. */ public YUIDateField(String id, IModel<Date> model, ElementMetaData metaData, boolean viewOnly) { super(id, model, metaData, viewOnly); type = metaData.getPropertyType(); boolean displayTz = false; Component metaDataComponent = metaData.getBeanMetaData().getComponent(); Localizer localizer = metaDataComponent.getLocalizer(); if (Time.class.isAssignableFrom(type) || java.sql.Date.class.isAssignableFrom(type) || Date.class.isAssignableFrom(type) || Timestamp.class.isAssignableFrom(type)) { fmt = localizer.getString( DATE_TIME_FIELD_PREFIX + "date" + FORMAT_SUFFIX, metaDataComponent, DATE_FMT_STR); } else if (Calendar.class.isAssignableFrom(type)) { fmt = viewOnly ? localizer.getString( DATE_TIME_FIELD_PREFIX + "datetz" + FORMAT_SUFFIX, metaDataComponent, DATE_ZONE_FMT_STR) : localizer.getString( DATE_TIME_FIELD_PREFIX + "date" + FORMAT_SUFFIX, metaDataComponent, DATE_FMT_STR); displayTz = true; } else { throw new RuntimeException("YUIDateField does not handle " + type); } String customFmt = getFormat(); if (customFmt != null) { fmt = customFmt; } Fragment fragment; if (viewOnly) { fragment = new Fragment("frag", "viewer"); fragment.add(DateLabel.withConverter("date", model, new InternalDateConverter())); } else { fragment = new Fragment("frag", "editor"); FormComponent dateField = DateTextField.withConverter("dateTextField", model, new InternalDateConverter()); setFieldParameters(dateField); fragment.add(dateField); dateField.add( new DatePicker() { private static final long serialVersionUID = 1L; @Override protected boolean enableMonthYearSelection() { return false; } @Override protected CharSequence getIconUrl() { return RequestCycle.get() .urlFor(new ResourceReference(YUIDateField.class, "calendar.gif")); } }); if (displayTz) { DateLabel tzLabel = DateLabel.withConverter("timezone", model, new TimeZoneConverter()); fragment.add(tzLabel); } else { fragment.add(new Label("timezone", "").setVisible(false)); } } add(fragment); }