// This file is part of AceWiki. // Copyright 2008-2013, AceWiki developers. // // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU // Lesser General Public License as published by the Free Software Foundation, either version 3 of // the License, or (at your option) any later version. // // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If // not, see http://www.gnu.org/licenses/. package ch.uzh.ifi.attempto.acewiki.core; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * This class controls the behavior and content of the predictive editor. * * @author Tobias Kuhn */ public class EditorController { private List<String> menuGroups = new ArrayList<String>(); private List<String> extensibleCategories = new ArrayList<String>(); private Map<String, String> wordTypesForCat = new HashMap<String, String>(); private Map<String, Integer> wordNumbersForCat = new HashMap<String, Integer>(); private Map<String, String> menuGroupsForCat = new HashMap<String, String>(); private Map<String, Integer> colorShifts = new HashMap<String, Integer>(); private String[] autocompleteTokens = new String[] {}; private String defaultMenuGroup = ""; /** * Adds a menu group. The order of the method-calls define the order in which the menu groups * will appear in the editor. Color shifts can be set to give the menu groups different colors. * * @param menuGroup The name of the menu group to be added. * @param colorShift The color shift. */ public void addMenuGroup(String menuGroup, int colorShift) { menuGroups.add(menuGroup); colorShifts.put(menuGroup, colorShift); } /** * Sets the menu group for all words that have no menu group assigned otherwise. * * @param defaultMenuGroup The name of the default menu group. */ public void setDefaultMenuGroup(String defaultMenuGroup) { this.defaultMenuGroup = defaultMenuGroup; } /** * Returns all menu groups in the order they appear in the editor. * * @return All menu groups. */ public List<String> getMenuGroups() { return menuGroups; } /** * Returns a list of all extensible categories. * * @return All extensible categories. */ public List<String> getExtensibleCategories() { return extensibleCategories; } /** * Returns the color shift for the given menu group. * * @param menuBlockName The name of the menu group. * @return The color shift. */ public int getColorShift(String menuBlockName) { if (colorShifts.containsKey(menuBlockName)) { return colorShifts.get(menuBlockName); } else { return 0; } } /** * Adds a grammatical category that is extensible. Extensible means that users can define * new words in this category. * * @param category The extensible category name. * @param menuGroup The menu group for the category. * @param type The type of the respective ontology elements. * @param wordNumber The word number. */ public void addExtensibleCategory(String category, String menuGroup, String type, int wordNumber) { extensibleCategories.add(category); menuGroupsForCat.put(category, menuGroup); wordTypesForCat.put(category, type); wordNumbersForCat.put(category, wordNumber); } /** * Adds a grammatical category that is not extensible. * * @param category The category name. * @param menuGroup The menu group for the category. */ public void addPlainCategory(String category, String menuGroup) { menuGroupsForCat.put(category, menuGroup); } /** * Returns the menu group for the given category. * * @param category The category name. * @return The name of the menu group. */ public String getMenuGroup(String category) { String mg = menuGroupsForCat.get(category); if (mg != null) { return mg; } else { return defaultMenuGroup; } } /** * Returns the word type for the given extensible category, or null if the category is not * extensible. * * @param category The category name. * @return The word type. */ public String getWordType(String category) { return wordTypesForCat.get(category); } /** * Returns the word number for the given extensible category, or null if the category is not * extensible. * * @param category The category name. * @return The word number. */ public int getWordNumber(String category) { return wordNumbersForCat.get(category); } /** * Sets the tokens that normally form the end of a sentence and that should be used to * automatically complete sentences. These tokens are usually punctuation symbols like a dot or * a question mark. * * @param autocompleteTokens */ public void setAutocompleteTokens(String... autocompleteTokens) { this.autocompleteTokens = autocompleteTokens; } /** * Returns the tokens used for autocompletion of sentences. * * @return The autocompletion tokens. */ public String[] getAutocompleteTokens() { return autocompleteTokens; } }