package games.strategy.triplea.settings.scrolling;
import java.util.Arrays;
import java.util.List;
import javax.swing.JTextField;
import games.strategy.engine.ClientContext;
import games.strategy.triplea.settings.IntegerValueRange;
import games.strategy.triplea.settings.SettingInputComponent;
import games.strategy.triplea.settings.SettingInputComponentFactory;
import games.strategy.triplea.settings.SettingsTab;
public class ScrollSettingsTab implements SettingsTab<ScrollSettings> {
private final List<SettingInputComponent<ScrollSettings>> inputs;
public ScrollSettingsTab(final ScrollSettings settings) {
inputs = Arrays.asList(
SettingInputComponentFactory.buildIntegerText(
new IntegerValueRange(2, 200, ScrollSettings.DEFAULT_ARROW_KEY_SCROLL_SPEED),
"Arrow scroll speed",
"How fast the map scrolls when using the arrow keys",
new JTextField(String.valueOf(settings.getArrowKeyScrollSpeed()), 5),
ScrollSettings::setArrowKeyScrollSpeed,
(scrollSettings) -> String.valueOf(scrollSettings.getArrowKeyScrollSpeed())),
SettingInputComponentFactory.buildIntegerText(
new IntegerValueRange(2, 4, ScrollSettings.DEFAULT_FASTER_ARROW_KEY_SCROLL_MULTIPLIER),
"Arrow scroll speed multiplier",
"When holding control down, the arrow key map scroll speed is multiplied by this amount",
new JTextField(String.valueOf(settings.getFasterArrowKeyScrollMultiplier()), 5),
ScrollSettings::setFasterArrowKeyScrollMultiplier,
(scrollSettings) -> String.valueOf(scrollSettings.getFasterArrowKeyScrollMultiplier())),
SettingInputComponentFactory.buildIntegerText(
new IntegerValueRange(10, 250, ScrollSettings.DEFAULT_MAP_EDGE_SCROLL_SPEED),
"Map Edge Scroll Speed",
"How fast the map scrolls when the mouse cursor is placed close to the edge of the map",
new JTextField(String.valueOf(settings.getMapEdgeScrollSpeed()), 5),
ScrollSettings::setMapEdgeScrollSpeed,
scrollSettings -> String.valueOf(scrollSettings.getMapEdgeScrollSpeed())),
SettingInputComponentFactory.buildIntegerText(
new IntegerValueRange(0, 150, ScrollSettings.DEFAULT_MAP_EDGE_SCROLL_ZONE_SIZE),
"Map Edge Scroll Zone Size",
"How close the mouse cursor must be to the edge of the map for the map to scroll",
new JTextField(String.valueOf(settings.getMapEdgeScrollZoneSize()), 5),
ScrollSettings::setMapEdgeScrollZoneSize,
scrollSettings -> String.valueOf(scrollSettings.getMapEdgeScrollZoneSize())),
SettingInputComponentFactory.buildIntegerText(
new IntegerValueRange(10, 400, ScrollSettings.DEFAULT_WHEEL_SCROLL_AMOUNT),
"Mouse Wheel Scroll Amount",
"The distance the map is scrolled when the mouse wheel is used",
new JTextField(String.valueOf(settings.getWheelScrollAmount()), 5),
ScrollSettings::setWheelScrollAmount,
scrollSettings -> String.valueOf(scrollSettings.getWheelScrollAmount())));
}
@Override
public String getTabTitle() {
return "Scrolling";
}
@Override
public List<SettingInputComponent<ScrollSettings>> getInputs() {
return inputs;
}
@Override
public ScrollSettings getSettingsObject() {
return ClientContext.scrollSettings();
}
}