/** Creates new form FilterEditor */
  public FilterEditor(FilterRepository filters) {
    initComponents();
    this.filterRepository = filters;
    if (filterRepository.size() == 0) filterRepository.add(filterRepository.createNewFilter());
    this.filterModel = new FilterModel(filterRepository);

    init();
  }
  /**
   * Reads data from the form into the filter repository that was passed-in in the constructor
   * (returned by {@link #getFilterRepository})
   */
  void updateFilters() {
    filterRepository.clear(); // throw away all original filters

    Iterator filterIt = filterModel.iterator();
    while (filterIt.hasNext()) {
      TaskFilter f = (TaskFilter) filterIt.next();
      if (filter2keywords.get(f.getKeywordsFilter()) != null)
        f.setKeywordsFilter(
            filter2keywords.get(f.getKeywordsFilter()).getFilter()); // has panel, was touched

      if (filter2types.get(f.getTypesFilter()) != null)
        f.setTypesFilter(
            filter2types.get(f.getTypesFilter()).getFilter()); // has panel, was touched

      filterRepository.add(f);
    }
    if (filterModel.getSelectedFilter() != null) {
      filterRepository.setActive(filterModel.getSelectedFilter());
    }
  }