package ru.testing.client.controllers; import javafx.fxml.FXML; import javafx.scene.control.Label; import javafx.scene.control.TextArea; import javafx.scene.control.ToggleButton; import org.controlsfx.control.SegmentedButton; import ru.testing.client.common.Utils; import ru.testing.client.common.DataBase; import ru.testing.client.common.objects.ReceivedMessage; import ru.testing.client.common.objects.Settings; import ru.testing.client.websocket.ReceivedMessageType; import static ru.testing.client.common.Utils.getJsonPretty; /** * Controller for detail message tab form */ public class TabWsMessageController { private DataBase dataBase = DataBase.getInstance(); private ReceivedMessage message; @FXML private TextArea txMsgArea; @FXML private ToggleButton bWrapText; @FXML private ToggleButton bPrettyJson; @FXML private ToggleButton editMessage; @FXML private Label msgTimeLabel; @FXML private Label msgLengthLabel; @FXML private SegmentedButton segmentedButton; @FXML private void initialize() { // Get message settings Settings settings = dataBase.getSettings(); segmentedButton.setToggleGroup(null); // Set message as json pretty or text bPrettyJson.setOnAction(event -> { if (bPrettyJson.isSelected()) { Utils.PrettyStatus status = getJsonPretty(message.getMessage()); txMsgArea.setText(status.getMessage()); bPrettyJson.setSelected(status.getButtonSelect()); } else { txMsgArea.setText(message.getMessage()); } segmentedButton.requestFocus(); }); // Set text area wrap or not bWrapText.setOnAction(event -> { if (bWrapText.isSelected()) { txMsgArea.setWrapText(true); } else { txMsgArea.setWrapText(false); } segmentedButton.requestFocus(); }); if (settings.isTextWrap()) { bWrapText.fire(); } // Set enable or disable edit text message editMessage.setOnAction(event -> { if (editMessage.isSelected()) { txMsgArea.setEditable(true); } else { txMsgArea.setEditable(false); } segmentedButton.requestFocus(); }); // Set message font size txMsgArea.setStyle(String.format("-fx-font-size: %spx;", settings.getFontSize())); } /** * Set message data in tab * * @param message ReceivedMessage */ public void setMessage(ReceivedMessage message) { this.message = message; // Set message text and data on init tab txMsgArea.setText(message.getMessage()); String sb = (message.getMessageType() == ReceivedMessageType.RECEIVED ? "Received " : "Send ") + "time: " + message.getFormattedTime(); msgTimeLabel.setText(sb); msgLengthLabel.setText(String.format("Length: %s", message.getMessage().length())); } }