예제 #1
0
 /**
  * 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);
 }
예제 #2
0
  @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;
  }