Search in sources :

Example 1 with UITextEntry

use of org.terasology.nui.widgets.UITextEntry in project Terasology by MovingBlocks.

the class NUIEditorTextEntryBuilder method createValueEditor.

/**
 * @return A {@link UITextEntry} to be used to edit a JSON value node.
 */
public static UITextEntry<JsonTree> createValueEditor() {
    UITextEntry.Formatter<JsonTree> formatter = value -> value.getValue().toString();
    UITextEntry.Parser<JsonTree> parser = value -> {
        try {
            Double valueDouble = Double.parseDouble(value);
            return new JsonTree(new JsonTreeValue(null, valueDouble, JsonTreeValue.Type.VALUE));
        } catch (NumberFormatException e) {
            if ("true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value)) {
                return new JsonTree(new JsonTreeValue(null, Boolean.parseBoolean(value), JsonTreeValue.Type.VALUE));
            } else {
                return new JsonTree(new JsonTreeValue(null, value, JsonTreeValue.Type.VALUE));
            }
        }
    };
    return createEditorEntry(formatter, parser);
}
Also used : JsonElement(com.google.gson.JsonElement) JsonObject(com.google.gson.JsonObject) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonSyntaxException(com.google.gson.JsonSyntaxException) Gson(com.google.gson.Gson) Map(java.util.Map) JsonPrimitive(com.google.gson.JsonPrimitive) JsonParser(com.google.gson.JsonParser) UITextEntry(org.terasology.nui.widgets.UITextEntry) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) UITextEntry(org.terasology.nui.widgets.UITextEntry)

Example 2 with UITextEntry

use of org.terasology.nui.widgets.UITextEntry in project Terasology by MovingBlocks.

the class NUIEditorTextEntryBuilder method createArrayEditor.

/**
 * @return A {@link UITextEntry} to be used to edit a JSON array node.
 */
public static UITextEntry<JsonTree> createArrayEditor() {
    UITextEntry.Formatter<JsonTree> formatter = value -> value.getValue().getKey();
    UITextEntry.Parser<JsonTree> parser = value -> new JsonTree(new JsonTreeValue(value, null, JsonTreeValue.Type.ARRAY));
    return createEditorEntry(formatter, parser);
}
Also used : JsonElement(com.google.gson.JsonElement) JsonObject(com.google.gson.JsonObject) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonSyntaxException(com.google.gson.JsonSyntaxException) Gson(com.google.gson.Gson) Map(java.util.Map) JsonPrimitive(com.google.gson.JsonPrimitive) JsonParser(com.google.gson.JsonParser) UITextEntry(org.terasology.nui.widgets.UITextEntry) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) UITextEntry(org.terasology.nui.widgets.UITextEntry)

Example 3 with UITextEntry

use of org.terasology.nui.widgets.UITextEntry in project Terasology by MovingBlocks.

the class NUIEditorTextEntryBuilder method createKeyValueEditor.

/**
 * @return A {@link UITextEntry} to be used to edit a JSON key/value node.
 */
public static UITextEntry<JsonTree> createKeyValueEditor() {
    UITextEntry.Formatter<JsonTree> formatter = value -> {
        JsonObject jsonObject = new JsonObject();
        String jsonKey = value.getValue().getKey();
        Object jsonValue = value.getValue().getValue();
        if (jsonValue instanceof Boolean) {
            jsonObject.addProperty(jsonKey, (Boolean) jsonValue);
        } else if (jsonValue instanceof Number) {
            jsonObject.addProperty(jsonKey, (Number) jsonValue);
        } else if (jsonValue instanceof String) {
            jsonObject.addProperty(jsonKey, (String) jsonValue);
        } else {
            jsonObject.addProperty(jsonKey, (Character) jsonValue);
        }
        String jsonString = new Gson().toJson(jsonObject);
        return jsonString.substring(1, jsonString.length() - 1);
    };
    UITextEntry.Parser<JsonTree> parser = value -> {
        String jsonString = String.format("{%s}", value);
        try {
            JsonElement jsonElement = new JsonParser().parse(jsonString);
            Map.Entry keyValuePair = jsonElement.getAsJsonObject().entrySet().iterator().next();
            String jsonKey = (String) keyValuePair.getKey();
            JsonTreeValue parsedNode;
            if (keyValuePair.getValue() == null) {
                parsedNode = new JsonTreeValue(jsonKey, null, JsonTreeValue.Type.KEY_VALUE_PAIR);
            } else {
                JsonPrimitive jsonValue = (JsonPrimitive) keyValuePair.getValue();
                if (jsonValue.isBoolean()) {
                    parsedNode = new JsonTreeValue(jsonKey, jsonValue.getAsBoolean(), JsonTreeValue.Type.KEY_VALUE_PAIR);
                } else if (jsonValue.isNumber()) {
                    parsedNode = new JsonTreeValue(jsonKey, jsonValue.getAsNumber(), JsonTreeValue.Type.KEY_VALUE_PAIR);
                } else {
                    parsedNode = new JsonTreeValue(jsonKey, jsonValue.getAsString(), JsonTreeValue.Type.KEY_VALUE_PAIR);
                }
            }
            return new JsonTree(parsedNode);
        } catch (JsonSyntaxException e) {
            return null;
        }
    };
    return createEditorEntry(formatter, parser);
}
Also used : JsonElement(com.google.gson.JsonElement) JsonObject(com.google.gson.JsonObject) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonSyntaxException(com.google.gson.JsonSyntaxException) Gson(com.google.gson.Gson) Map(java.util.Map) JsonPrimitive(com.google.gson.JsonPrimitive) JsonParser(com.google.gson.JsonParser) UITextEntry(org.terasology.nui.widgets.UITextEntry) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) JsonPrimitive(com.google.gson.JsonPrimitive) JsonObject(com.google.gson.JsonObject) Gson(com.google.gson.Gson) UITextEntry(org.terasology.nui.widgets.UITextEntry) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonSyntaxException(com.google.gson.JsonSyntaxException) JsonElement(com.google.gson.JsonElement) UITextEntry(org.terasology.nui.widgets.UITextEntry) JsonObject(com.google.gson.JsonObject) JsonParser(com.google.gson.JsonParser)

Example 4 with UITextEntry

use of org.terasology.nui.widgets.UITextEntry in project Terasology by MovingBlocks.

the class NUIEditorTextEntryBuilder method createObjectEditor.

/**
 * @return A {@link UITextEntry} to be used to edit a JSON object node.
 */
public static UITextEntry<JsonTree> createObjectEditor() {
    UITextEntry.Formatter<JsonTree> formatter = value -> value.getValue().getKey();
    UITextEntry.Parser<JsonTree> parser = value -> new JsonTree(new JsonTreeValue(value, null, JsonTreeValue.Type.OBJECT));
    return createEditorEntry(formatter, parser);
}
Also used : JsonElement(com.google.gson.JsonElement) JsonObject(com.google.gson.JsonObject) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonSyntaxException(com.google.gson.JsonSyntaxException) Gson(com.google.gson.Gson) Map(java.util.Map) JsonPrimitive(com.google.gson.JsonPrimitive) JsonParser(com.google.gson.JsonParser) UITextEntry(org.terasology.nui.widgets.UITextEntry) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) JsonTreeValue(org.terasology.nui.widgets.treeView.JsonTreeValue) JsonTree(org.terasology.nui.widgets.treeView.JsonTree) UITextEntry(org.terasology.nui.widgets.UITextEntry)

Aggregations

Gson (com.google.gson.Gson)4 JsonElement (com.google.gson.JsonElement)4 JsonObject (com.google.gson.JsonObject)4 JsonParser (com.google.gson.JsonParser)4 JsonPrimitive (com.google.gson.JsonPrimitive)4 JsonSyntaxException (com.google.gson.JsonSyntaxException)4 Map (java.util.Map)4 UITextEntry (org.terasology.nui.widgets.UITextEntry)4 JsonTree (org.terasology.nui.widgets.treeView.JsonTree)4 JsonTreeValue (org.terasology.nui.widgets.treeView.JsonTreeValue)4