package ru.testing.client.elements.tabs;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.Tab;
import javafx.scene.control.Tooltip;
import javafx.scene.image.ImageView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.testing.client.MainApp;
import ru.testing.client.controllers.MainController;
import ru.testing.client.controllers.TabWsMessagesController;
import ru.testing.client.websocket.WsClient;
import java.io.IOException;
/**
* Tab with detail message
*/
public class WsMessagesTab extends Tab {
private static final Logger LOGGER = LoggerFactory.getLogger(SettingsTab.class.getName());
private TabWsMessagesController controller;
private String serverUrl;
public WsMessagesTab() {
MainController mainController = MainApp.getMainController();
serverUrl = mainController.getServerUrl().getText();
setText("WsMessages");
setGraphic(new ImageView("/images/messages.png"));
setOnClosed(event -> {
WsClient wsClient = controller.getWsClient();
if (wsClient != null) {
wsClient.closeConnection();
mainController.getWsClients().remove(wsClient);
}
});
// Load detail message view form
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/tab.ws.messages.fxml"));
Parent root = loader.load();
controller = loader.getController();
setContent(root);
} catch (IOException e) {
LOGGER.error("Error load view form: {}", e.getMessage());
}
// Setup tab tooltip
setTooltip(new Tooltip(String.format("Connected to %s", serverUrl)));
}
public TabWsMessagesController getController() {
return controller;
}
public String getServerUrl() {
return serverUrl;
}
}