package de.jaschastarke.minecraft.limitedcreative.cmdblocker;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import de.jaschastarke.bukkit.lib.configuration.ConfigurableList;
import de.jaschastarke.bukkit.lib.configuration.IToGeneric;
import de.jaschastarke.bukkit.lib.configuration.command.ITabComplete;
import de.jaschastarke.bukkit.lib.configuration.command.ListConfigValue;
import de.jaschastarke.configuration.InvalidValueException;
public class CmdBlockList extends ArrayList<ICmdBlockEntry> implements ConfigurableList<ICmdBlockEntry>, IToGeneric, ITabComplete {
private static final long serialVersionUID = -125544131527849084L;
@Override
public boolean addSetting(String cmd) throws InvalidValueException {
if (cmd.startsWith("^")) {
return add(new RegexpBlockEntry(cmd));
} else {
return add(new StringBlockEntry(cmd));
}
}
@Override
public boolean removeSetting(String e) {
for (Iterator<ICmdBlockEntry> iterator = this.iterator(); iterator.hasNext();) {
ICmdBlockEntry entry = iterator.next();
if (entry.toString().equalsIgnoreCase(e)) {
iterator.remove();
return true;
}
}
return false;
}
@Override
public List<String> toGeneric() {
List<String> list = new ArrayList<String>(size());
for (ICmdBlockEntry bl : this) {
list.add(bl.toString());
}
return list;
}
@Override
public void clearSettings() {
clear();
}
public List<String> tabComplete(String[] args, String[] chain) {
if (args.length > 0 && chain.length > 0) {
if (chain[chain.length - 1].equalsIgnoreCase(ListConfigValue.REMOVE)) {
List<String> hints = new ArrayList<String>();
for (ICmdBlockEntry s : this) {
if (s.toString().toLowerCase().startsWith(args[0].toLowerCase()))
hints.add(s.toString());
}
return hints;
}
}
return null;
}
}