package org.geogebra.common.kernel.commands; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.LocusEquation; import org.geogebra.common.kernel.cas.CmdCASCommand1Arg; import org.geogebra.common.kernel.cas.CmdCoefficients; import org.geogebra.common.kernel.cas.CmdDegree; import org.geogebra.common.kernel.cas.CmdImplicitDerivative; import org.geogebra.common.kernel.cas.CmdIntegral; import org.geogebra.common.kernel.cas.CmdLimit; import org.geogebra.common.kernel.cas.CmdLimitAbove; import org.geogebra.common.kernel.cas.CmdLimitBelow; import org.geogebra.common.kernel.cas.CmdNextPreviousPrime; import org.geogebra.common.kernel.cas.CmdParametricDerivative; import org.geogebra.common.kernel.cas.CmdPartialFractions; import org.geogebra.common.kernel.cas.CmdSimplify; import org.geogebra.common.kernel.cas.CmdSolveODE; import org.geogebra.common.kernel.cas.CmdSurdText; import org.geogebra.common.kernel.cas.CmdTrigCombine; import org.geogebra.common.kernel.cas.CmdTrigExpand; import org.geogebra.common.main.App; /** * class to split off some CmdXXX classes into another jar (for faster applet * loading) * */ public class CommandDispatcherCAS implements CommandDispatcherInterface { @Override public CommandProcessor dispatch(Commands c, Kernel kernel) { App app = kernel.getApplication(); // syntaxes ALLOWED in exam mode switch (c) { case Integral: case IntegralBetween: case NIntegral: return new CmdIntegral(kernel, c); case NDerivative: return new CmdNDerivative(kernel); } if (!app.getSettings().getCasSettings().isEnabled()) { if (Commands.Derivative.equals(c)) { return new CmdNDerivative(kernel); } return null; } // syntaxes disallowed in non-CAS Exam Mode switch (c) { case LocusEquation: return LocusEquation.newCmdLocusEquation(kernel); case Envelope: return LocusEquation.newCmdEnvelope(kernel); case TrigSimplify: case Expand: case Factor: case IFactor: return new CmdCASCommand1Arg(kernel, c); case Simplify: return new CmdSimplify(kernel); case SurdText: return new CmdSurdText(kernel); case ParametricDerivative: return new CmdParametricDerivative(kernel); case Derivative: return new CmdDerivative(kernel); case TrigExpand: return new CmdTrigExpand(kernel); case TrigCombine: return new CmdTrigCombine(kernel); case Limit: return new CmdLimit(kernel); case LimitBelow: return new CmdLimitBelow(kernel); case LimitAbove: return new CmdLimitAbove(kernel); case Degree: return new CmdDegree(kernel); case Coefficients: return new CmdCoefficients(kernel); case PartialFractions: return new CmdPartialFractions(kernel); case SolveODE: return new CmdSolveODE(kernel); case ImplicitDerivative: return new CmdImplicitDerivative(kernel); case NextPrime: return new CmdNextPreviousPrime(kernel, true); case PreviousPrime: return new CmdNextPreviousPrime(kernel, false); default: break; } return null; } }