package org.jabref.gui.groups;
import org.jabref.logic.l10n.Localization;
import org.jabref.model.groups.ExplicitGroup;
import org.jabref.model.groups.KeywordGroup;
import org.jabref.model.groups.SearchGroup;
import org.jabref.model.strings.StringUtil;
public class GroupDescriptions {
private GroupDescriptions() {
}
public static String getDescriptionForPreview(String field, String expr, boolean caseSensitive, boolean regExp) {
String header = regExp ? Localization.lang(
"This group contains entries whose <b>%0</b> field contains the regular expression <b>%1</b>",
field, StringUtil.quoteForHTML(expr)) : Localization.lang(
"This group contains entries whose <b>%0</b> field contains the keyword <b>%1</b>",
field, StringUtil.quoteForHTML(expr));
String caseSensitiveText = caseSensitive ? Localization.lang("case sensitive") : Localization
.lang("case insensitive");
String footer = regExp ? Localization
.lang("Entries cannot be manually assigned to or removed from this group.") : Localization.lang(
"Additionally, entries whose <b>%0</b> field does not contain "
+ "<b>%1</b> can be assigned manually to this group by selecting them "
+ "then using either drag and drop or the context menu. "
+ "This process adds the term <b>%1</b> to "
+ "each entry's <b>%0</b> field. "
+ "Entries can be removed manually from this group by selecting them "
+ "then using the context menu. "
+ "This process removes the term <b>%1</b> from "
+ "each entry's <b>%0</b> field.",
field, StringUtil.quoteForHTML(expr));
return String.format("%s (%s). %s", header, caseSensitiveText, footer);
}
public static String getShortDescriptionKeywordGroup(KeywordGroup keywordGroup, boolean showDynamic) {
StringBuilder sb = new StringBuilder();
sb.append("<b>");
if (showDynamic) {
sb.append("<i>").append(StringUtil.quoteForHTML(keywordGroup.getName())).append("</i>");
} else {
sb.append(StringUtil.quoteForHTML(keywordGroup.getName()));
}
sb.append("</b> - ");
sb.append(Localization.lang("dynamic group"));
sb.append(" <b>");
sb.append(keywordGroup.getSearchField());
sb.append("</b> ");
sb.append(Localization.lang("contains"));
sb.append(" <b>");
sb.append(StringUtil.quoteForHTML(keywordGroup.getSearchExpression()));
sb.append("</b>)");
switch (keywordGroup.getHierarchicalContext()) {
case INCLUDING:
sb.append(", ").append(Localization.lang("includes subgroups"));
break;
case REFINING:
sb.append(", ").append(Localization.lang("refines supergroup"));
break;
default:
break;
}
return sb.toString();
}
public static String getDescriptionForPreview() {
return Localization.lang("This group contains entries based on manual assignment. "
+ "Entries can be assigned to this group by selecting them "
+ "then using either drag and drop or the context menu. "
+ "Entries can be removed from this group by selecting them "
+ "then using the context menu.");
}
public static String getShortDescriptionExplicitGroup(ExplicitGroup explicitGroup) {
StringBuilder sb = new StringBuilder();
sb.append("<b>").append(explicitGroup.getName()).append("</b> - ").append(Localization.lang("static group"));
switch (explicitGroup.getHierarchicalContext()) {
case INCLUDING:
sb.append(", ").append(Localization.lang("includes subgroups"));
break;
case REFINING:
sb.append(", ").append(Localization.lang("refines supergroup"));
break;
default:
break;
}
return sb.toString();
}
public static String getShortDescriptionAllEntriesGroup() {
return Localization.lang("<b>All Entries</b> (this group cannot be edited or removed)");
}
public static String getShortDescription(SearchGroup searchGroup, boolean showDynamic) {
StringBuilder sb = new StringBuilder();
sb.append("<b>");
if (showDynamic) {
sb.append("<i>").append(StringUtil.quoteForHTML(searchGroup.getName())).append("</i>");
} else {
sb.append(StringUtil.quoteForHTML(searchGroup.getName()));
}
sb.append("</b> - ");
sb.append(Localization.lang("dynamic group"));
sb.append(" (");
sb.append(Localization.lang("search expression"));
sb.append(" <b>").append(StringUtil.quoteForHTML(searchGroup.getSearchExpression())).append("</b>)");
switch (searchGroup.getHierarchicalContext()) {
case INCLUDING:
sb.append(", ").append(Localization.lang("includes subgroups"));
break;
case REFINING:
sb.append(", ").append(Localization.lang("refines supergroup"));
break;
default:
break;
}
return sb.toString();
}
}