Search in sources :

Example 1 with Property

use of org.terasology.nui.properties.Property in project Terasology by MovingBlocks.

the class BehaviorEditorScreen method onEntitySelected.

private void onEntitySelected(Interpreter value, PropertyProvider provider) {
    if (selectedInterpreter != null) {
        selectedInterpreter.setCallback(null);
    }
    selectedInterpreter = value;
    if (selectedInterpreter != null) {
        EntityRef entity = value.actor().getEntity();
        onTreeSelected(selectedInterpreter.getTree());
        entityProperties.clear();
        for (Component component : entity.iterateComponents()) {
            String name = component.getClass().getSimpleName().replace("Component", "");
            List<Property<?, ?>> componentProperties = provider.createProperties(component);
            entityProperties.addProperties(name, componentProperties);
        }
        selectedInterpreter.setCallback(behaviorEditor);
    }
}
Also used : BehaviorComponent(org.terasology.engine.logic.behavior.BehaviorComponent) Component(org.terasology.gestalt.entitysystem.component.Component) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) Property(org.terasology.nui.properties.Property)

Example 2 with Property

use of org.terasology.nui.properties.Property in project Terasology by MovingBlocks.

the class AutoConfigWidgetFactory method buildWidgetFor.

/**
 * Creates {@link UIWidget} for {@link AutoConfig}
 *
 * @param config for creating widget
 * @return UIWidget created for config
 */
public UIWidget buildWidgetFor(AutoConfig config) {
    PropertyLayout container = new PropertyLayout();
    container.setRowConstraints("[min]");
    Collection<Property<?, ?>> widgetProperties = new ArrayList<>();
    for (Setting<?> setting : config.getSettings()) {
        Optional<UIWidget> settingWidget = settingWidgetFactory.createWidgetFor(setting);
        if (!settingWidget.isPresent()) {
            logger.error("Couldn't find a widget for the Setting [{}]", setting.getHumanReadableName());
            continue;
        }
        widgetProperties.add(new Property<>(translationSystem.translate(setting.getHumanReadableName()), null, settingWidget.get(), translationSystem.translate(setting.getDescription())));
    }
    container.addProperties(translationSystem.translate(config.getName()), widgetProperties);
    return container;
}
Also used : PropertyLayout(org.terasology.nui.layouts.PropertyLayout) ArrayList(java.util.ArrayList) Property(org.terasology.nui.properties.Property) UIWidget(org.terasology.nui.UIWidget)

Example 3 with Property

use of org.terasology.nui.properties.Property in project Terasology by MovingBlocks.

the class PreviewWorldScreen method configureProperties.

private void configureProperties() {
    PropertyLayout propLayout = find("properties", PropertyLayout.class);
    propLayout.setOrdering(PropertyOrdering.byLabel());
    propLayout.clear();
    WorldConfigurator worldConfig = worldGenerator.getConfigurator();
    Map<String, Component> params = worldConfig.getProperties();
    for (String key : params.keySet()) {
        Class<? extends Component> clazz = params.get(key).getClass();
        Component comp = config.getModuleConfig(worldGenerator.getUri(), key, clazz);
        if (comp != null) {
            // use the data from the config instead of defaults
            worldConfig.setProperty(key, comp);
        }
    }
    ComponentLibrary compLib = subContext.get(ComponentLibrary.class);
    for (String label : params.keySet()) {
        PropertyProvider provider = new PropertyProvider(context.get(ReflectFactory.class), context.get(OneOfProviderFactory.class)) {

            @Override
            protected <T> Binding<T> createTextBinding(Object target, FieldMetadata<Object, T> fieldMetadata) {
                return new WorldConfigBinding<>(worldConfig, label, compLib, fieldMetadata);
            }

            @Override
            protected Binding<Float> createFloatBinding(Object target, FieldMetadata<Object, ?> fieldMetadata) {
                return new WorldConfigNumberBinding(worldConfig, label, compLib, fieldMetadata);
            }
        };
        Component target = params.get(label);
        List<Property<?, ?>> properties = provider.createProperties(target);
        propLayout.addProperties(label, properties);
    }
}
Also used : FieldMetadata(org.terasology.reflection.metadata.FieldMetadata) WorldConfigurator(org.terasology.engine.world.generator.WorldConfigurator) ReflectFactory(org.terasology.reflection.reflect.ReflectFactory) OneOfProviderFactory(org.terasology.nui.properties.OneOfProviderFactory) PropertyLayout(org.terasology.nui.layouts.PropertyLayout) PropertyProvider(org.terasology.nui.properties.PropertyProvider) ComponentLibrary(org.terasology.engine.entitySystem.metadata.ComponentLibrary) Component(org.terasology.gestalt.entitysystem.component.Component) Property(org.terasology.nui.properties.Property)

Example 4 with Property

use of org.terasology.nui.properties.Property in project Terasology by MovingBlocks.

the class WorldSetupScreen method configureProperties.

/**
 * Assigns a {@link WorldConfigurator} for every world if it doesn't exist. Using
 * the WorldConfigurator it gets the properties associated with that world.
 */
private void configureProperties() {
    PropertyLayout propLayout = find("properties", PropertyLayout.class);
    propLayout.setOrdering(PropertyOrdering.byLabel());
    propLayout.clear();
    WorldConfigurator worldConfig;
    if (world.getWorldConfigurator() != null) {
        worldConfig = world.getWorldConfigurator();
    } else {
        worldConfig = worldGenerator.getConfigurator();
        world.setWorldConfigurator(worldConfig);
    }
    oldWorldConfig = worldConfig;
    Map<String, Component> params = worldConfig.getProperties();
    for (String key : params.keySet()) {
        Class<? extends Component> clazz = params.get(key).getClass();
        Component comp = config.getModuleConfig(worldGenerator.getUri(), key, clazz);
        if (comp != null) {
            // use the data from the config instead of defaults
            worldConfig.setProperty(key, comp);
        }
    }
    ComponentLibrary compLib = context.get(ComponentLibrary.class);
    for (String label : params.keySet()) {
        PropertyProvider provider = new PropertyProvider(context.get(ReflectFactory.class), context.get(OneOfProviderFactory.class)) {

            @Override
            protected <T> Binding<T> createTextBinding(Object target, FieldMetadata<Object, T> fieldMetadata) {
                return new WorldSetupScreen.WorldConfigBinding<>(worldConfig, label, compLib, fieldMetadata);
            }

            @Override
            protected Binding<Float> createFloatBinding(Object target, FieldMetadata<Object, ?> fieldMetadata) {
                return new WorldSetupScreen.WorldConfigNumberBinding(worldConfig, label, compLib, fieldMetadata);
            }
        };
        Component target = params.get(label);
        List<Property<?, ?>> properties = provider.createProperties(target);
        propLayout.addProperties(label, properties);
    }
}
Also used : FieldMetadata(org.terasology.reflection.metadata.FieldMetadata) WorldConfigurator(org.terasology.engine.world.generator.WorldConfigurator) ReflectFactory(org.terasology.reflection.reflect.ReflectFactory) OneOfProviderFactory(org.terasology.nui.properties.OneOfProviderFactory) PropertyLayout(org.terasology.nui.layouts.PropertyLayout) PropertyProvider(org.terasology.nui.properties.PropertyProvider) ComponentLibrary(org.terasology.engine.entitySystem.metadata.ComponentLibrary) Component(org.terasology.gestalt.entitysystem.component.Component) Property(org.terasology.nui.properties.Property)

Aggregations

Property (org.terasology.nui.properties.Property)4 Component (org.terasology.gestalt.entitysystem.component.Component)3 PropertyLayout (org.terasology.nui.layouts.PropertyLayout)3 ComponentLibrary (org.terasology.engine.entitySystem.metadata.ComponentLibrary)2 WorldConfigurator (org.terasology.engine.world.generator.WorldConfigurator)2 OneOfProviderFactory (org.terasology.nui.properties.OneOfProviderFactory)2 PropertyProvider (org.terasology.nui.properties.PropertyProvider)2 FieldMetadata (org.terasology.reflection.metadata.FieldMetadata)2 ReflectFactory (org.terasology.reflection.reflect.ReflectFactory)2 ArrayList (java.util.ArrayList)1 EntityRef (org.terasology.engine.entitySystem.entity.EntityRef)1 BehaviorComponent (org.terasology.engine.logic.behavior.BehaviorComponent)1 UIWidget (org.terasology.nui.UIWidget)1