/* GeoGebra - Dynamic Mathematics for Everyone http://www.geogebra.org This file is part of GeoGebra. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. */ package org.geogebra.common.kernel.commands; import java.util.SortedSet; import java.util.TreeSet; /** * This implementation is based upon the TreeSet collection class to provide * quick lookups and default sorting. * */ public class CommandDictionary extends TreeSet<String> { private static final long serialVersionUID = 1L; /** * Adds an entry to the dictionary. * * @param s * The string to add to the dictionary. */ public void addEntry(String s) { super.add(s); } /** * Removes an entry from the dictionary. * * @param s * The string to remove to the dictionary. * @return True if successful, false if the string is not contained or * cannot be removed. */ public boolean removeEntry(String s) { return super.remove(s); } /** * Perform a lookup. This routine returns the closest matching string that * completely contains the given string, or null if none is found. * * @param curr * The string to use as the base for the lookup. * @return curr The closest matching string that completely contains the * given string. */ public String lookup(String curr) { if ("".equals(curr)) { return null; } try { SortedSet<String> tailSet = tailSet(curr); if (tailSet != null) { Object firstObj = tailSet.first(); if (firstObj != null) { String first = (String) firstObj; if (first.startsWith(curr)) { return first; } } } } catch (Exception e) { return null; } return null; } }