package org.seqcode.projects.seqview.paintable; import java.util.Map; public class RegexMatchProperties extends PaintableProperties { public String[] expressions; public String[] labels; public RegexMatchProperties (int n) { expressions = new String[n]; labels = new String[n]; } public RegexMatchProperties(Map<String,String> map) { int n = map.size(); expressions = new String[n]; labels = new String[n]; int i = 0; for (String label : map.keySet()) { labels[i] = label; expressions[i] = map.get(label); i++; } } public void addRegex(String regex) { addRegex(regex,regex); } public void addRegex(String label, String regex) { int i = firstFree(); if (i < 0) { expand(); i = firstFree(); } expressions[i] = regex; labels[i] = label; } private int firstFree() { for (int i = 0; i < expressions.length; i++) { if (expressions[i] == null) { return i; } } return -1; } private void expand() { String[] newe = new String[expressions.length * 2]; String[] newl = new String[labels.length * 2]; for (int i = 0; i < expressions.length; i++) { newe[i] = expressions[i]; newl[i] = labels[i]; } expressions = newe; labels = newl; } }