package org.geogebra.keyboard.base.model.impl.factory;
import static org.geogebra.keyboard.base.model.impl.factory.Characters.DEGREE;
import static org.geogebra.keyboard.base.model.impl.factory.Characters.EULER;
import static org.geogebra.keyboard.base.model.impl.factory.Util.addButton;
import static org.geogebra.keyboard.base.model.impl.factory.Util.addConstantCustomButton;
import static org.geogebra.keyboard.base.model.impl.factory.Util.addConstantInputButton;
import static org.geogebra.keyboard.base.model.impl.factory.Util.addConstantInputCommandButton;
import static org.geogebra.keyboard.base.model.impl.factory.Util.addInputButton;
import static org.geogebra.keyboard.base.model.impl.factory.Util.addTranslateInputCommandButton;
import org.geogebra.keyboard.base.Action;
import org.geogebra.keyboard.base.Resource;
import org.geogebra.keyboard.base.model.KeyboardModel;
import org.geogebra.keyboard.base.model.impl.KeyboardModelImpl;
import org.geogebra.keyboard.base.model.impl.RowImpl;
class FunctionKeyboardFactory {
KeyboardModel createFunctionKeyboard(ButtonFactory buttonFactory) {
KeyboardModelImpl functionKeyboard = new KeyboardModelImpl();
float width = 5.0f / 3;
RowImpl row = functionKeyboard.nextRow(9.2f);
addTranslateInputCommandButton(row, buttonFactory, "Function.sin", "Function.sin", width);
addTranslateInputCommandButton(row, buttonFactory, "Function.cos", "Function.cos", width);
addTranslateInputCommandButton(row, buttonFactory, "Function.tan", "Function.tan", width);
addButton(row, buttonFactory.createEmptySpace(0.2f));
addInputButton(row, buttonFactory, "%");
addInputButton(row, buttonFactory, "!");
addInputButton(row, buttonFactory, "$");
addInputButton(row, buttonFactory, DEGREE);
row = functionKeyboard.nextRow(9.2f);
addTranslateInputCommandButton(row, buttonFactory, "Function.asin", "Function.asin", width);
addTranslateInputCommandButton(row, buttonFactory, "Function.acos", "Function.acos", width);
addTranslateInputCommandButton(row, buttonFactory, "Function.atan", "Function.atan", width);
addButton(row, buttonFactory.createEmptySpace(0.2f));
addInputButton(row, buttonFactory, "{");
addInputButton(row, buttonFactory, "}");
addInputButton(row, buttonFactory, ";");
addInputButton(row, buttonFactory, ":=", "\u2254");
row = functionKeyboard.nextRow(9.2f);
addInputButton(row, buttonFactory, "ln", width);
addConstantInputButton(row, buttonFactory, Resource.LOG_10, "log_{10}", width);
addConstantInputButton(row, buttonFactory, Resource.LOG_B, "logb", width);
addButton(row, buttonFactory.createEmptySpace(0.2f));
addConstantInputCommandButton(row, buttonFactory, Resource.DERIVATIVE, "Derivative", 1.0f);
addConstantInputCommandButton(row, buttonFactory, Resource.INTEGRAL, "Integral", 1.0f);
addInputButton(row, buttonFactory, "i", "\u03af");
addConstantCustomButton(row, buttonFactory, Resource.BACKSPACE_DELETE, Action.BACKSPACE_DELETE);
row = functionKeyboard.nextRow(9.2f);
addConstantInputButton(row, buttonFactory, Resource.POWE_X, EULER + "^", width);
addConstantInputButton(row, buttonFactory, Resource.POW10_X, "10^", width);
addConstantInputButton(row, buttonFactory, Resource.N_ROOT, "nroot", width);
addButton(row, buttonFactory.createEmptySpace(0.2f));
addConstantInputButton(row, buttonFactory, Resource.A_N, "a_n");
addConstantCustomButton(row, buttonFactory, Resource.LEFT_ARROW, Action.LEFT_CURSOR);
addConstantCustomButton(row, buttonFactory, Resource.RIGHT_ARROW, Action.RIGHT_CURSOR);
addConstantCustomButton(row, buttonFactory, Resource.RETURN_ENTER, Action.RETURN_ENTER);
return functionKeyboard;
}
}