[FEATURE] Added String array reader, to display in Reflection GUI

This commit is contained in:
JKetelaar
2017-01-23 14:55:00 +01:00
parent b533a8a64c
commit db180661ad
2 changed files with 23 additions and 0 deletions
@@ -5,6 +5,7 @@ import org.parabot.core.asm.ASMClassLoader;
import org.parabot.core.classpath.ClassPath;
import org.parabot.core.reflect.RefClass;
import org.parabot.core.reflect.RefField;
import org.parabot.environment.api.utils.StringUtils;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
@@ -91,6 +92,8 @@ public class ReflectUI extends JFrame {
result = f;
} else if (value.toLowerCase().endsWith(search.toLowerCase())) {
result = f;
} else if (value.toLowerCase().contains(search.toLowerCase())){
result = f;
}
}
}
@@ -238,6 +241,13 @@ public class ReflectUI extends JFrame {
builder.append("<b>Type: </b>").append(refField.getASMType().getClassName()).append("<br/>");
builder.append("<b>Static: </b>").append(refField.isStatic() ? "yes" : "no").append("<br/>");
builder.append("<b>Array: </b>").append(refField.isArray() ? refField.getArrayDimensions() + " dimension(s)" : "no").append("<br/>");
if (refField.isArray() && refField.getASMType().getClassName().contains("String") && refField.getArrayDimensions() == 1){
String[] strings = (String[]) refField.asObject();
String values = StringUtils.implode(", ", strings);
builder.append("<b>Values: </b>").append(values).append("<br/>");
}
selectionInfoPane.setText(builder.toString());
fillBasicInfoPane();
@@ -28,6 +28,19 @@ public class StringUtils {
return sb.toString();
}
public static String implode(String separator, String... data) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.length - 1; i++) {
//data.length - 1 => to not add separator at the end
if (!data[i].matches(" *")) {//empty string are ""; " "; " "; and so on
sb.append(data[i]);
sb.append(separator);
}
}
sb.append(data[data.length - 1].trim());
return sb.toString();
}
public static String randomString(final int length) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 20; i++) {