package org.geogebra.keyboard.base.model.impl;
import org.geogebra.keyboard.base.Action;
import org.geogebra.keyboard.base.ActionType;
import org.geogebra.keyboard.base.Background;
import org.geogebra.keyboard.base.Resource;
import org.geogebra.keyboard.base.ResourceType;
import org.geogebra.keyboard.base.model.KeyModifier;
public class CapsLockModifier implements KeyModifier {
private boolean capsLock = false;
public void toggleCapsLock() {
capsLock = !capsLock;
}
public boolean disableCapsLock() {
boolean capsLockWasEnabled = capsLock;
capsLock = false;
return capsLockWasEnabled;
}
@Override
public String modifyResourceName(String resourceName, ResourceType resourceType) {
if (resourceType == ResourceType.TEXT && resourceName.length() == 1) {
if (capsLock) {
return resourceName.toUpperCase();
}
} else if (resourceType == ResourceType.DEFINED_CONSTANT && resourceName.equals(Resource.CAPS_LOCK.name())) {
if (capsLock) {
return Resource.CAPS_LOCK_ENABLED.name();
}
}
return resourceName;
}
@Override
public String modifyActionName(String actionName, ActionType actionType) {
if (actionType == ActionType.INPUT && actionName.length() == 1) {
if (capsLock) {
return actionName.toUpperCase();
}
}
return actionName;
}
@Override
public Background modifyBackground(Background background, ActionType actionType, String actionName) {
if (actionType == ActionType.CUSTOM && actionName.equals(Action.CAPS_LOCK.name())) {
if (capsLock) {
return Background.FUNCTIONAL_PRESSED;
}
}
return background;
}
}