package com.limegroup.gnutella.gui.options.panes;
import java.io.IOException;
import java.util.Arrays;
import java.util.Vector;
import java.util.List;
import com.limegroup.gnutella.RouterService;
import com.limegroup.gnutella.gui.ListEditor;
import com.limegroup.gnutella.settings.FilterSettings;
/**
* This class defines the panel in the options window that allows the user
* set add and remove words from a list of words to ignore when they
* appear in search results.
*/
//2345678|012345678|012345678|012345678|012345678|012345678|012345678|012345678|
public final class IgnoreResultsPaneItem extends AbstractPaneItem {
/**
* Constant handle to the <tt>ListEditor</tt> that adds and removes
* word to ignore.
*/
private final ListEditor RESULTS_LIST = new ListEditor();
/**
* The constructor constructs all of the elements of this
* <tt>AbstractPaneItem</tt>.
*
* @param key the key for this <tt>AbstractPaneItem</tt> that the
* superclass uses to generate strings
*/
public IgnoreResultsPaneItem(final String key) {
super(key);
add(RESULTS_LIST);
}
/**
* Defines the abstract method in <tt>AbstractPaneItem</tt>.<p>
*
* Sets the options for the fields in this <tt>PaneItem</tt> when the
* window is shown.
*/
public void initOptions() {
String[] bannedWords = FilterSettings.BANNED_WORDS.getValue();
RESULTS_LIST.setModel(new Vector(Arrays.asList(bannedWords)));
}
/**
* Defines the abstract method in <tt>AbstractPaneItem</tt>.<p>
*
* Applies the options currently set in this window, displaying an
* error message to the user if a setting could not be applied.
*
* @throws IOException if the options could not be applied for some reason
*/
public boolean applyOptions() throws IOException {
Vector model = RESULTS_LIST.getModel();
String[] bannedResults = new String[model.size()];
model.copyInto(bannedResults);
FilterSettings.BANNED_WORDS.setValue(bannedResults);
RouterService.adjustSpamFilters();
return false;
}
public boolean isDirty() {
List model = Arrays.asList(FilterSettings.BANNED_WORDS.getValue());
return !model.equals(RESULTS_LIST.getModel());
}
}