package me.desht.scrollingmenusign;
import me.desht.dhutils.MiscUtil;
import me.desht.scrollingmenusign.parser.CommandParser;
import me.desht.scrollingmenusign.parser.ParsedCommand;
import me.desht.scrollingmenusign.parser.SubstitutionHandler;
import me.desht.scrollingmenusign.util.Substitutions;
import me.desht.scrollingmenusign.variables.VariablesManager;
import me.desht.scrollingmenusign.views.ViewManager;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.List;
public class SMSHandlerImpl implements SMSHandler {
private final MenuManager menuManager;
SMSHandlerImpl(ScrollingMenuSign plugin) {
menuManager = plugin.getMenuManager();
}
@Override
@Deprecated
public SMSMenu createMenu(String name, String title, String owner) {
SMSMenu menu;
try {
//noinspection deprecation
menu = new SMSMenu(name, MiscUtil.parseColourSpec(title), owner);
} catch (SMSException e) {
// should not get here
return null;
}
menuManager.registerMenu(name, menu);
return menu;
}
@Override
public SMSMenu createMenu(String name, String title, Player owner) {
SMSMenu menu;
try {
menu = new SMSMenu(name, MiscUtil.parseColourSpec(title), owner);
} catch (SMSException e) {
e.printStackTrace();
// should not get here
return null;
}
menuManager.registerMenu(name, menu);
return menu;
}
@Override
public SMSMenu createMenu(String name, String title, Plugin owner) {
SMSMenu menu;
try {
menu = new SMSMenu(name, MiscUtil.parseColourSpec(title), owner);
} catch (SMSException e) {
// should not get here
return null;
}
menuManager.registerMenu(name, menu);
return menu;
}
@Override
public SMSMenu getMenu(String name) throws SMSException {
return menuManager.getMenu(name);
}
@Override
public boolean checkMenu(String name) {
return menuManager.checkForMenu(name);
}
@Override
public void deleteMenu(String name) throws SMSException {
menuManager.getMenu(name).deletePermanent();
}
@Override
public SMSMenu getMenuAt(Location loc) throws SMSException {
return menuManager.getMenuAt(loc);
}
@Override
public String getMenuNameAt(Location loc) {
return menuManager.getMenuNameAt(loc);
}
@Override
public List<SMSMenu> listMenus() {
return menuManager.listMenus();
}
@Override
public List<SMSMenu> listMenus(boolean isSorted) {
return menuManager.listMenus(isSorted);
}
@Override
public ParsedCommand executeCommand(CommandSender sender, String command) throws SMSException {
return new CommandParser().executeCommand(sender, command);
}
@Override
public ViewManager getViewManager() {
return ScrollingMenuSign.getInstance().getViewManager();
}
@Override
public VariablesManager getVariablesManager() {
return ScrollingMenuSign.getInstance().getVariablesManager();
}
@Override
public MenuManager getMenuManager() {
return menuManager;
}
@Override
public void addCommandSubstitution(String sub, SubstitutionHandler handler) {
Substitutions.addSubstitutionHandler(sub, handler);
}
}