2014-06-29 20:31:37 +10:00
|
|
|
package codechicken.nei.config;
|
|
|
|
|
|
2024-12-29 04:36:53 +02:00
|
|
|
import codechicken.lib.gui.GuiDraw;
|
|
|
|
|
|
2022-06-24 12:32:13 +01:00
|
|
|
public class OptionIntegerField extends OptionTextField {
|
2023-01-28 17:55:51 -08:00
|
|
|
|
2024-12-29 04:36:53 +02:00
|
|
|
public static final long UNSIGNED_INT_MAX = 0xFFFFFFFFL;
|
|
|
|
|
|
|
|
|
|
public final long min;
|
|
|
|
|
public final long max;
|
2022-06-24 12:32:13 +01:00
|
|
|
|
2024-12-29 04:36:53 +02:00
|
|
|
public OptionIntegerField(String name, long min, long max) {
|
2014-06-29 20:31:37 +10:00
|
|
|
super(name);
|
|
|
|
|
this.min = min;
|
|
|
|
|
this.max = max;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public OptionIntegerField(String name) {
|
|
|
|
|
this(name, Integer.MIN_VALUE, Integer.MAX_VALUE);
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-29 04:36:53 +02:00
|
|
|
@Override
|
|
|
|
|
protected int getMaxInputWidth() {
|
|
|
|
|
|
|
|
|
|
if (renderTag().getValue().startsWith("0x")) {
|
|
|
|
|
return GuiDraw.getStringWidth("0x" + Long.toHexString(this.max).toUpperCase()) + 32;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return GuiDraw.getStringWidth(String.valueOf(this.max)) + 32;
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-29 20:31:37 +10:00
|
|
|
@Override
|
|
|
|
|
public boolean isValidInput(String s) {
|
2024-12-29 04:36:53 +02:00
|
|
|
if (s.isEmpty()) return true;
|
2014-06-29 20:31:37 +10:00
|
|
|
|
|
|
|
|
try {
|
2024-02-21 18:12:28 +02:00
|
|
|
if (s.startsWith("0x")) {
|
2024-12-29 04:36:53 +02:00
|
|
|
Long.parseUnsignedLong(s.substring(2), 16);
|
2024-02-21 18:12:28 +02:00
|
|
|
} else {
|
|
|
|
|
Integer.parseInt(s);
|
|
|
|
|
}
|
2014-06-29 20:31:37 +10:00
|
|
|
return true;
|
2022-06-24 12:32:13 +01:00
|
|
|
} catch (NumberFormatException nfe) {
|
2014-06-29 20:31:37 +10:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isValidValue(String s) {
|
2024-12-29 04:36:53 +02:00
|
|
|
if (s.isEmpty() || !isValidInput(s)) return false;
|
|
|
|
|
long i = 0;
|
2024-02-21 18:12:28 +02:00
|
|
|
|
|
|
|
|
if (s.startsWith("0x")) {
|
2024-12-29 04:36:53 +02:00
|
|
|
i = Long.parseUnsignedLong(s.substring(2), 16);
|
2024-02-21 18:12:28 +02:00
|
|
|
} else {
|
|
|
|
|
i = Integer.parseInt(s);
|
|
|
|
|
}
|
2014-06-29 20:31:37 +10:00
|
|
|
|
2024-12-29 04:36:53 +02:00
|
|
|
return i >= this.min && i <= this.max;
|
2014-06-29 20:31:37 +10:00
|
|
|
}
|
|
|
|
|
}
|