package org.geogebra.keyboard.base.model.impl.factory;
import org.geogebra.keyboard.base.model.KeyboardModel;
/**
* This class can create {@link KeyboardModel}s of different types.
* It is not thread safe.
*/
public class KeyboardModelFactory {
private MathKeyboardFactory mathKeyboardFactory;
private GreekKeyboardFactory greekKeyboardFactory;
private FunctionKeyboardFactory functionKeyboardFactory;
private LetterKeyboardFactory letterKeyboardFactory;
private SpecialSymbolsKeyboardFactory specialSymbolsKeyboardFactory;
public KeyboardModel createMathKeyboard(ButtonFactory buttonFactory) {
if (mathKeyboardFactory == null) {
mathKeyboardFactory = new MathKeyboardFactory();
}
return mathKeyboardFactory.createMathKeyboard(buttonFactory);
}
public KeyboardModel createGreekKeyboard(ButtonFactory buttonFactory) {
if (greekKeyboardFactory == null) {
greekKeyboardFactory = new GreekKeyboardFactory();
}
return greekKeyboardFactory.createGreekKeyboard(buttonFactory);
}
public KeyboardModel createFunctionKeyboard(ButtonFactory buttonFactory) {
if (functionKeyboardFactory == null) {
functionKeyboardFactory = new FunctionKeyboardFactory();
}
return functionKeyboardFactory.createFunctionKeyboard(buttonFactory);
}
public KeyboardModel createLetterKeyboard(ButtonFactory buttonFactory, String topRow, String middleRow, String bottomRow) {
if (letterKeyboardFactory == null) {
letterKeyboardFactory = new LetterKeyboardFactory();
}
return letterKeyboardFactory.createLetterKeyboard(buttonFactory, topRow, middleRow, bottomRow);
}
public KeyboardModel createSpecialSymbolsKeyboard(ButtonFactory buttonFactory) {
if (specialSymbolsKeyboardFactory == null) {
specialSymbolsKeyboardFactory = new SpecialSymbolsKeyboardFactory();
}
return specialSymbolsKeyboardFactory.createSpecialSymbolsKeyboard(buttonFactory);
}
}