/** * Return a button opening a content selector for fields where one exists * * @param frame * @param panel * @param editor * @param contentSelectors * @param storeFieldAction * @return */ public static Optional<JComponent> getSelectorExtraComponent( JabRefFrame frame, BasePanel panel, FieldEditor editor, Set<FieldContentSelector> contentSelectors, StoreFieldAction storeFieldAction) { FieldContentSelector ws = new FieldContentSelector( frame, panel, frame, editor, storeFieldAction, false, InternalBibtexFields.getFieldProperties(editor.getFieldName()) .contains(FieldProperty.PERSON_NAMES) ? " and " : ", "); contentSelectors.add(ws); return Optional.of(ws); }
@Override public List<IntegrityMessage> check(BibEntry entry) { List<IntegrityMessage> result = new ArrayList<>(); for (String field : entry.getFieldNames()) { if (InternalBibtexFields.getFieldProperties(field).contains(FieldProperty.PERSON_NAMES)) { Optional<String> value = entry.getField(field); if (!value.isPresent()) { return Collections.emptyList(); } String valueTrimmedAndLowerCase = value.get().trim().toLowerCase(); if (valueTrimmedAndLowerCase.startsWith("and ") || valueTrimmedAndLowerCase.startsWith(",")) { result.add( new IntegrityMessage(Localization.lang("should start with a name"), entry, field)); } else if (valueTrimmedAndLowerCase.endsWith(" and") || valueTrimmedAndLowerCase.endsWith(",")) { result.add( new IntegrityMessage(Localization.lang("should end with a name"), entry, field)); } } } return result; }