/*
* WPCleaner: A tool to help on Wikipedia maintenance tasks.
* Copyright (C) 2013 Nicolas Vervelle
*
* See README.txt file for licensing information.
*/
package org.wikipediacleaner.gui.swing.action;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.util.Collections;
import java.util.List;
import javax.swing.text.TextAction;
import org.wikipediacleaner.api.constants.EnumWikipedia;
import org.wikipediacleaner.gui.swing.basic.Utilities;
import org.wikipediacleaner.utils.Configuration;
import org.wikipediacleaner.utils.StringChecker;
/**
* An action listener for adding a preferred disambiguation.
*/
@SuppressWarnings("serial")
public class ChangePreferredDisambiguationAction extends TextAction {
private final EnumWikipedia wikipedia;
private final String page;
private final String preferred;
private final boolean add;
private final Component parent;
private final String message;
private final String defaultValue;
private final StringChecker checker;
public ChangePreferredDisambiguationAction(
EnumWikipedia wikipedia,
String page,
String preferred,
boolean add) {
super("AddPreferredDisambiguation");
this.wikipedia = wikipedia;
this.page = page;
this.preferred = preferred;
this.add = add;
this.parent = null;
this.message = null;
this.defaultValue = null;
this.checker = null;
}
public ChangePreferredDisambiguationAction(
EnumWikipedia wikipedia,
String page,
Component parent,
String message,
String defaultValue,
StringChecker checker) {
super("AddPreferredDisambiguation");
this.wikipedia = wikipedia;
this.page = page;
this.preferred = null;
this.add = true;
this.parent = parent;
this.message = message;
this.defaultValue = defaultValue;
this.checker = checker;
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(@SuppressWarnings("unused") ActionEvent e) {
Configuration config = Configuration.getConfiguration();
List<String> preferredDabs = config.getStringSubList(
wikipedia, Configuration.SUB_ARRAY_PREFERRED_DAB, page);
if (add) {
String value = preferred;
if (value == null) {
value = Utilities.askForValue(parent, message, defaultValue, checker);
}
if ((value != null) && !preferredDabs.contains(value)) {
preferredDabs.add(value);
Collections.sort(preferredDabs);
config.setStringSubList(
wikipedia, Configuration.SUB_ARRAY_PREFERRED_DAB, page, preferredDabs);
}
} else {
if ((preferred != null) && preferredDabs.contains(preferred)) {
preferredDabs.remove(preferred);
Collections.sort(preferredDabs);
config.setStringSubList(
wikipedia, Configuration.SUB_ARRAY_PREFERRED_DAB, page, preferredDabs);
}
}
}
}