use of org.terasology.engine.config.ServerInfo in project Terasology by MovingBlocks.
the class JoinGameScreen method bindCustomButtons.
private void bindCustomButtons() {
UIList<?> customServerList = find("customServerList", UIList.class);
ReadOnlyBinding<Boolean> localSelectedServerOnly = new ReadOnlyBinding<Boolean>() {
@Override
public Boolean get() {
return customServerList.getSelection() != null;
}
};
UIButton add = find("add", UIButton.class);
if (add != null) {
add.subscribe(button -> {
AddServerPopup popup = getManager().pushScreen(AddServerPopup.ASSET_URI, AddServerPopup.class);
// select the entry if added successfully
popup.onSuccess(item -> {
config.getNetwork().addServerInfo(item);
visibleList.setSelection(item);
});
});
}
UIButton edit = find("edit", UIButton.class);
if (edit != null) {
edit.bindEnabled(localSelectedServerOnly);
edit.subscribe(button -> {
AddServerPopup popup = getManager().pushScreen(AddServerPopup.ASSET_URI, AddServerPopup.class);
ServerInfo info = visibleList.getSelection();
popup.setServerInfo(info);
// editing invalidates the currently known info, so query it again
popup.onSuccess(item -> extInfo.put(item, infoService.requestInfo(item.getAddress(), item.getPort())));
});
}
UIButton removeButton = find("remove", UIButton.class);
if (removeButton != null) {
removeButton.bindEnabled(localSelectedServerOnly);
removeButton.subscribe(button -> {
ServerInfo info = visibleList.getSelection();
if (info != null) {
config.getNetwork().removeServerInfo(info);
extInfo.remove(info);
visibleList.setSelection(null);
}
});
}
UILabel downloadLabel = find("download", UILabel.class);
if (downloadLabel != null) {
downloadLabel.bindText(new ReadOnlyBinding<String>() {
@Override
public String get() {
return translationSystem.translate(downloader.getStatus());
}
});
}
}
use of org.terasology.engine.config.ServerInfo in project Terasology by MovingBlocks.
the class JoinGameScreen method initialise.
@Override
public void initialise() {
setAnimationSystem(MenuAnimationSystems.createDefaultSwipeAnimation());
downloader = new ServerListDownloader(config.getNetwork().getMasterServer());
CardLayout cards = find("cards", CardLayout.class);
UIList<ServerInfo> customServerList = find("customServerList", UIList.class);
if (customServerList != null) {
customServerList.setList(config.getNetwork().getServerInfos());
configureServerList(customServerList);
}
UIList<ServerInfo> onlineServerList = find("onlineServerList", UIList.class);
if (onlineServerList != null) {
onlineServerList.setList(listedServers);
configureServerList(onlineServerList);
}
ActivateEventListener activateCustom = e -> {
cards.setDisplayedCard("customServerListScrollArea");
find("customButton", UIButton.class).setFamily("highlight");
find("onlineButton", UIButton.class).setFamily("default");
visibleList = customServerList;
refresh();
};
WidgetUtil.trySubscribe(this, "customButton", activateCustom);
ActivateEventListener activateOnline = e -> {
cards.setDisplayedCard("onlineServerListScrollArea");
find("customButton", UIButton.class).setFamily("default");
find("onlineButton", UIButton.class).setFamily("highlight");
visibleList = onlineServerList;
refresh();
};
WidgetUtil.trySubscribe(this, "onlineButton", activateOnline);
bindCustomButtons();
bindInfoLabels();
WidgetUtil.trySubscribe(this, "close", button -> {
config.save();
triggerBackAnimation();
});
activateOnline.onActivated(null);
}
use of org.terasology.engine.config.ServerInfo in project Terasology by MovingBlocks.
the class TelemetryScreen method pushAddServerPopupAndStartLogBackAppender.
private void pushAddServerPopupAndStartLogBackAppender() {
AddServerPopup addServerPopup = nuiManager.pushScreen(AddServerPopup.ASSET_URI, AddServerPopup.class);
addServerPopup.removeTip();
ServerInfo serverInfo;
TelemetryConfig telemetryConfig = config.getTelemetryConfig();
if (telemetryConfig.getErrorReportingDestination() != null) {
try {
URL url = new URL("http://" + telemetryConfig.getErrorReportingDestination());
serverInfo = new ServerInfo(telemetryConfig.getErrorReportingServerName(), url.getHost(), url.getPort());
serverInfo.setOwner(telemetryConfig.getErrorReportingServerOwner());
} catch (Exception e) {
logger.error("Exception when get telemetry server information", e);
serverInfo = new ServerInfo(TelemetryLogstashAppender.DEFAULT_LOGSTASH_NAME, TelemetryLogstashAppender.DEFAULT_LOGSTASH_HOST, TelemetryLogstashAppender.DEFAULT_LOGSTASH_PORT);
serverInfo.setOwner(TelemetryLogstashAppender.DEFAULT_LOGSTASH_OWNER);
}
} else {
serverInfo = new ServerInfo(TelemetryLogstashAppender.DEFAULT_LOGSTASH_NAME, TelemetryLogstashAppender.DEFAULT_LOGSTASH_HOST, TelemetryLogstashAppender.DEFAULT_LOGSTASH_PORT);
serverInfo.setOwner(TelemetryLogstashAppender.DEFAULT_LOGSTASH_OWNER);
}
addServerPopup.setServerInfo(serverInfo);
addServerPopup.onSuccess((item) -> {
String destinationLogstash = item.getAddress() + ":" + item.getPort();
TelemetryLogstashAppender telemetryLogstashAppender = TelemetryUtils.fetchTelemetryLogstashAppender();
if (telemetryLogstashAppender != null) {
telemetryLogstashAppender.addDestination(destinationLogstash);
telemetryLogstashAppender.start();
}
// Save the destination
telemetryConfig.setErrorReportingDestination(destinationLogstash);
telemetryConfig.setErrorReportingServerName(item.getName());
telemetryConfig.setErrorReportingServerOwner(item.getOwner());
});
addServerPopup.onCancel((button) -> telemetryConfig.setErrorReportingEnabled(false));
}
use of org.terasology.engine.config.ServerInfo in project Terasology by MovingBlocks.
the class TelemetryScreen method pushAddServerPopupAndStartEmitter.
private void pushAddServerPopupAndStartEmitter() {
AddServerPopup addServerPopup = nuiManager.pushScreen(AddServerPopup.ASSET_URI, AddServerPopup.class);
addServerPopup.removeTip();
ServerInfo serverInfo;
TelemetryConfig telemetryConfig = config.getTelemetryConfig();
String telemetryDestination = telemetryConfig.getTelemetryDestination();
if (telemetryDestination != null) {
try {
URL url = new URL(telemetryDestination);
String address = url.getHost();
int port = url.getPort();
serverInfo = new ServerInfo(telemetryConfig.getTelemetryServerName(), address, port);
serverInfo.setOwner(telemetryConfig.getTelemetryServerOwner());
} catch (Exception e) {
logger.error("Exception when get telemetry server information", e);
serverInfo = new ServerInfo(TelemetryEmitter.DEFAULT_COLLECTOR_NAME, TelemetryEmitter.DEFAULT_COLLECTOR_HOST, TelemetryEmitter.DEFAULT_COLLECTOR_PORT);
serverInfo.setOwner(TelemetryEmitter.DEFAULT_COLLECTOR_OWNER);
}
} else {
serverInfo = new ServerInfo(TelemetryEmitter.DEFAULT_COLLECTOR_NAME, TelemetryEmitter.DEFAULT_COLLECTOR_HOST, TelemetryEmitter.DEFAULT_COLLECTOR_PORT);
serverInfo.setOwner(TelemetryEmitter.DEFAULT_COLLECTOR_OWNER);
}
addServerPopup.setServerInfo(serverInfo);
addServerPopup.onSuccess((item) -> {
TelemetryEmitter telemetryEmitter = (TelemetryEmitter) emitter;
Optional<URL> optionalURL = item.getURL("http");
if (optionalURL.isPresent()) {
telemetryEmitter.changeUrl(optionalURL.get());
// Save the telemetry destination
telemetryConfig.setTelemetryDestination(optionalURL.get().toString());
telemetryConfig.setTelemetryServerName(item.getName());
telemetryConfig.setTelemetryServerOwner(item.getOwner());
}
});
addServerPopup.onCancel((button) -> config.getTelemetryConfig().setTelemetryEnabled(false));
}
use of org.terasology.engine.config.ServerInfo in project Terasology by MovingBlocks.
the class ServerListDownloader method download.
private void download(String address) throws IOException {
status = "${engine:menu#downloading-server-list}";
URL url = new URL("http", address, "/servers/list");
try (Reader reader = new InputStreamReader(url.openStream(), charset);
JsonReader jsonReader = new JsonReader(reader)) {
status = "${engine:menu#parsing-content}";
jsonReader.beginArray();
TypeAdapter<ServerInfo> adapter = GSON.getAdapter(ServerInfo.class);
while (jsonReader.hasNext()) {
ServerInfo entry = adapter.read(jsonReader);
servers.add(entry);
logger.info("Retrieved game server {}", entry);
try {
Thread.sleep(250);
} catch (InterruptedException e) {
// ignore - this is just to create an animation anyway
}
}
jsonReader.endArray();
if (servers.size() == 0) {
status = String.format("Server Error!");
} else {
status = String.format("${engine:menu#server-list-complete}");
}
}
}
Aggregations