Search in sources :

Example 11 with UIButton

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

the class JoinGameScreen method bindInfoLabels.

private void bindInfoLabels() {
    final ReadOnlyBinding<ServerInfo> infoBinding = new ReadOnlyBinding<ServerInfo>() {

        @Override
        public ServerInfo get() {
            return visibleList.getSelection();
        }
    };
    UILabel name = find("name", UILabel.class);
    if (name != null) {
        name.bindText(BindHelper.bindBoundBeanProperty("name", infoBinding, ServerInfo.class, String.class));
    }
    UILabel owner = find("owner", UILabel.class);
    if (owner != null) {
        owner.bindText(BindHelper.bindBoundBeanProperty("owner", infoBinding, ServerInfo.class, String.class));
    }
    UILabel address = find("address", UILabel.class);
    if (address != null) {
        address.bindText(BindHelper.bindBoundBeanProperty("address", infoBinding, ServerInfo.class, String.class));
    }
    UILabel port = find("port", UILabel.class);
    if (port != null) {
        port.bindText(new IntToStringBinding(BindHelper.bindBoundBeanProperty("port", infoBinding, ServerInfo.class, int.class)));
    }
    UILabel onlinePlayers = find("onlinePlayers", UILabel.class);
    onlinePlayers.bindText(new ReadOnlyBinding<String>() {

        @Override
        public String get() {
            Future<ServerInfoMessage> info = extInfo.get(visibleList.getSelection());
            if (info != null) {
                if (info.isDone()) {
                    return getOnlinePlayersText(info);
                } else {
                    return translationSystem.translate("${engine:menu#join-server-requested}");
                }
            }
            return null;
        }
    });
    UILabel modules = find("modules", UILabel.class);
    modules.bindText(new ReadOnlyBinding<String>() {

        @Override
        public String get() {
            Future<ServerInfoMessage> info = extInfo.get(visibleList.getSelection());
            if (info != null) {
                if (info.isDone()) {
                    return getModulesText(info);
                } else {
                    return translationSystem.translate("${engine:menu#join-server-requested}");
                }
            }
            return null;
        }
    });
    UILabel worlds = find("worlds", UILabel.class);
    worlds.bindText(new ReadOnlyBinding<String>() {

        @Override
        public String get() {
            Future<ServerInfoMessage> info = extInfo.get(visibleList.getSelection());
            if (info != null) {
                if (info.isDone()) {
                    return getWorldText(info);
                } else {
                    return translationSystem.translate("${engine:menu#join-server-requested}");
                }
            }
            return null;
        }
    });
    UIButton joinButton = find("join", UIButton.class);
    if (joinButton != null) {
        joinButton.bindEnabled(new ReadOnlyBinding<Boolean>() {

            @Override
            public Boolean get() {
                return infoBinding.get() != null;
            }
        });
        joinButton.subscribe(button -> {
            config.save();
            ServerInfo item = infoBinding.get();
            if (item != null) {
                join(item.getAddress(), item.getPort());
            }
        });
    }
    UIButton refreshButton = find("refresh", UIButton.class);
    if (refreshButton != null) {
        refreshButton.bindEnabled(new ReadOnlyBinding<Boolean>() {

            @Override
            public Boolean get() {
                return visibleList.getSelection() != null;
            }
        });
        refreshButton.subscribe(button -> {
            refresh();
        });
    }
}
Also used : UILabel(org.terasology.nui.widgets.UILabel) ReadOnlyBinding(org.terasology.nui.databinding.ReadOnlyBinding) IntToStringBinding(org.terasology.nui.databinding.IntToStringBinding) ServerInfo(org.terasology.engine.config.ServerInfo) UIButton(org.terasology.nui.widgets.UIButton) Future(java.util.concurrent.Future)

Example 12 with UIButton

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

the class LaunchPopup method setOptionButtonText.

public void setOptionButtonText(String buttonText) {
    UIButton optionButton = find("option", UIButton.class);
    optionButton.setText(buttonText);
}
Also used : UIButton(org.terasology.nui.widgets.UIButton)

Example 13 with UIButton

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

the class EnterUsernamePopup method initialise.

@Override
public void initialise() {
    username = find("username", UIText.class);
    username.setText(playerConfig.playerName.get());
    username.bindTooltipString(new ReadOnlyBinding<String>() {

        @Override
        public String get() {
            return validateUserName();
        }
    });
    UIButton okButton = find("ok", UIButton.class);
    if (okButton != null) {
        okButton.subscribe(button -> {
            playerConfig.playerName.set(username.getText().trim());
            getManager().popScreen();
        });
        okButton.bindEnabled(new ReadOnlyBinding<Boolean>() {

            @Override
            public Boolean get() {
                return Strings.isNullOrEmpty(validateUserName());
            }
        });
        okButton.setTooltipDelay(0);
        okButton.bindTooltipString(new ReadOnlyBinding<String>() {

            @Override
            public String get() {
                return validateUserName();
            }
        });
    }
    WidgetUtil.trySubscribe(this, "cancel", button -> {
        getManager().popScreen();
    });
}
Also used : UIButton(org.terasology.nui.widgets.UIButton) UIText(org.terasology.nui.widgets.UIText)

Example 14 with UIButton

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

the class FilePickerPopup method initialise.

@Override
public void initialise() {
    WidgetUtil.trySubscribe(this, "gotoParent", button -> setCurrentDirectoryParent());
    WidgetUtil.trySubscribe(this, "gotoRoot", button -> setCurrentDirectoryRoot());
    WidgetUtil.trySubscribe(this, "gotoHome", button -> setCurrentDirectoryHome());
    find("gotoParent", UIButton.class).bindEnabled(new ReadOnlyBinding<Boolean>() {

        @Override
        public Boolean get() {
            return currentPath != null;
        }
    });
    find("currentPath", UILabel.class).bindText(new ReadOnlyBinding<String>() {

        @Override
        public String get() {
            return currentPath == null ? translationSystem.translate("${engine:menu#file-picker-roots-title}") : pathToString(currentPath, false);
        }
    });
    find("fileName", UIText.class).bindText(new Binding<String>() {

        @Override
        public String get() {
            return fileName;
        }

        @Override
        public void set(String value) {
            fileName = value;
        }
    });
    find("filePath", UILabel.class).bindText(new ReadOnlyBinding<String>() {

        @Override
        public String get() {
            if (currentPath == null) {
                return translationSystem.translate("${engine:menu#file-picker-invalid-location}");
            } else {
                return isValidFilename(fileName) ? translationSystem.translate("") + getPathToFile().toString() : translationSystem.translate("${engine:menu#file-picker-invalid-file-name}");
            }
        }
    });
    directoryContentsScroller = find("directoryContentsScroller", ScrollableArea.class);
    directoryContentsList = find("directoryContentsList", UIList.class);
    directoryContentsList.subscribeSelection((widget, item) -> handleItemSelection(item));
    setCurrentDirectoryHome();
    UIButton ok = find("ok", UIButton.class);
    ok.bindEnabled(new ReadOnlyBinding<Boolean>() {

        @Override
        public Boolean get() {
            return isValid();
        }
    });
    ok.subscribe(button -> {
        if (isValid()) {
            getManager().popScreen();
            okHandler.accept(getPathToFile());
        }
    });
    WidgetUtil.trySubscribe(this, "cancel", button -> getManager().popScreen());
}
Also used : UILabel(org.terasology.nui.widgets.UILabel) ScrollableArea(org.terasology.nui.layouts.ScrollableArea) UIList(org.terasology.nui.widgets.UIList) UIButton(org.terasology.nui.widgets.UIButton) UIText(org.terasology.nui.widgets.UIText)

Example 15 with UIButton

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

the class ConfirmUrlPopup method setLeftButton.

public void setLeftButton(String text, Runnable action) {
    UIButton leftButton = find("leftButton", UIButton.class);
    if (leftButton != null) {
        leftButton.setText(text);
    }
    leftActon = action;
}
Also used : UIButton(org.terasology.nui.widgets.UIButton)

Aggregations

UIButton (org.terasology.nui.widgets.UIButton)16 UILabel (org.terasology.nui.widgets.UILabel)8 List (java.util.List)3 Collectors (java.util.stream.Collectors)3 Logger (org.slf4j.Logger)3 LoggerFactory (org.slf4j.LoggerFactory)3 ColumnLayout (org.terasology.nui.layouts.ColumnLayout)3 UIBox (org.terasology.nui.widgets.UIBox)3 UIText (org.terasology.nui.widgets.UIText)3 Defaults (com.google.common.base.Defaults)2 Component (java.awt.Component)2 File (java.io.File)2 Constructor (java.lang.reflect.Constructor)2 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 Parameter (java.lang.reflect.Parameter)2 Arrays (java.util.Arrays)2 Optional (java.util.Optional)2 Future (java.util.concurrent.Future)2 JDialog (javax.swing.JDialog)2 JFileChooser (javax.swing.JFileChooser)2