package de.sebastianbenz.task.ui.highlighting; import static com.google.common.collect.Iterables.transform; import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Lists.newArrayListWithExpectedSize; import static de.sebastianbenz.task.ui.highlighting.HighlightingConfiguration.CODE_ID; import static java.util.Arrays.asList; import static org.eclipse.xtext.ui.editor.syntaxcoloring.DefaultHighlightingConfiguration.KEYWORD_ID; import java.util.Arrays; import java.util.Collection; import java.util.List; import com.google.common.base.Function; import de.sebastianbenz.task.ui.highlighting.Brush.Mapping; public class BrushBuilder { private String keywords = ""; private Mapping[] mappings = new Mapping[0]; private String[] names; public BrushBuilder(String... names) { this.names = names; } public static BrushBuilder lang(String... names) { return new BrushBuilder(names); } public BrushBuilder keywords(String keywords) { this.keywords = keywords; return this; } public BrushBuilder mapping(Mapping...mappings) { this.mappings = mappings; return this; } public Collection<Brush> build() { final List<Mapping> mappingsList = newArrayListWithExpectedSize(mappings.length + 1); mappingsList.addAll(asList(mappings)); mappingsList.add(Mapping.keywords(keywords).style(KEYWORD_ID)); mappingsList.add(Mapping.pattern("'''").style(CODE_ID)); return newArrayList(transform(Arrays.asList(names), new Function<String, Brush>(){ public Brush apply(String name) { return new Brush(name, mappingsList); } })); } }