package org.geogebra.keyboard.base.impl;
import org.geogebra.keyboard.base.ActionType;
import org.geogebra.keyboard.base.Background;
import org.geogebra.keyboard.base.Button;
import org.geogebra.keyboard.base.ResourceType;
import org.geogebra.keyboard.base.model.KeyModifier;
public class ButtonImpl implements Button {
private String resourceName;
private ResourceType resourceType;
private String actionName;
private ActionType actionType;
private Background background;
private KeyModifier[] modifiers;
public ButtonImpl(String resourceName, ResourceType resourceType,
String actionName, ActionType actionType,
Background background, KeyModifier[] modifiers) {
this.resourceName = resourceName;
this.resourceType = resourceType;
this.actionName = actionName;
this.actionType = actionType;
this.background = background;
this.modifiers = modifiers;
}
@Override
public String getResourceName() {
if (modifiers != null) {
String modifiedResourceName = resourceName;
for (KeyModifier modifier : modifiers) {
modifiedResourceName = modifier.modifyResourceName(modifiedResourceName, resourceType);
}
return modifiedResourceName;
}
return resourceName;
}
@Override
public ResourceType getResourceType() {
return resourceType;
}
@Override
public String getActionName() {
if (modifiers != null) {
String modifiedActionName = actionName;
for (KeyModifier modifier : modifiers) {
modifiedActionName = modifier.modifyActionName(modifiedActionName, actionType);
}
return modifiedActionName;
}
return actionName;
}
@Override
public ActionType getActionType() {
return actionType;
}
public Background getBackground() {
if (modifiers != null) {
Background modifiedBackground = background;
for (KeyModifier modifier : modifiers) {
modifiedBackground = modifier.modifyBackground(modifiedBackground, actionType, actionName);
}
return modifiedBackground;
}
return background;
}
}