/**
  * Overridden to get the input set and always add a NEW_ENTRY_TEXT if it's still not there. (and
  * also update the pre-computed filter entries accepted on a new input).
  */
 @Override
 public void setInput(Object input) {
   this.input = (List<String>) input;
   if (this.input.indexOf(NEW_ENTRY_TEXT) == -1) {
     this.input.add(NEW_ENTRY_TEXT);
   }
   super.setInput(input);
   this.updateFilterEntries(new NullProgressMonitor());
 }
  /** Overridden because we want to update the pre-computed list of accepted entries. */
  @Override
  protected void setFilter(String text, IProgressMonitor monitor, boolean updateFilter) {
    if (updateFilter) {
      if (fFilterMatcher.lastPattern.equals(text)) {
        // no actual change...
        return;
      }
      fFilterMatcher.setFilter(text);
      if (monitor.isCanceled()) {
        return;
      }
    }

    updateFilterEntries(monitor);
    // the filter is already updated in this class.
    super.setFilter(text, monitor, false);
  }