Utils ported

This commit is contained in:
Sebastian Hartte
2020-06-28 13:28:14 +02:00
parent fee5b7fdfc
commit 46955643b9
105 changed files with 239 additions and 379 deletions
-62
View File
@@ -1,62 +0,0 @@
package appeng.util;
import java.util.EnumSet;
/**
* Simple utility class to help with select the "next" or "previous" value in a
* list of options represented by an enumeration.
*/
public final class EnumCycler {
private EnumCycler() {
}
public static <T extends Enum<T>> T rotateEnum(T ce, final boolean backwards, final EnumSet<T> validOptions) {
do {
if (backwards) {
ce = prevEnum(ce);
} else {
ce = next(ce);
}
} while (!validOptions.contains(ce));
return ce;
}
/*
* Simple way to cycle an enum...
*/
public static <T extends Enum<T>> T prevEnum(final T ce) {
T[] values = ce.getDeclaringClass().getEnumConstants();
int pLoc = ce.ordinal() - 1;
if (pLoc < 0) {
pLoc = values.length - 1;
}
if (pLoc < 0 || pLoc >= values.length) {
pLoc = 0;
}
return values[pLoc];
}
/*
* Simple way to cycle an enum...
*/
public static <T extends Enum<T>> T next(final T ce) {
T[] values = ce.getDeclaringClass().getEnumConstants();
int pLoc = ce.ordinal() + 1;
if (pLoc >= values.length) {
pLoc = 0;
}
if (pLoc < 0 || pLoc >= values.length) {
pLoc = 0;
}
return values[pLoc];
}
}