package net.dongliu.proxy.ui.component; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.layout.BorderPane; import net.dongliu.proxy.data.HttpMessage; import java.io.IOException; import static net.dongliu.proxy.ui.RequestCopyUtils.*; /** * Panel show Http message(request and response) * * @author Liu Dong */ public class HttpRoundTripMessagePane extends BorderPane { @FXML private HttpMessagePane requestBodyPane; @FXML private HttpMessagePane responseBodyPane; private ObjectProperty<HttpMessage> httpMessage = new SimpleObjectProperty<>(); public HttpRoundTripMessagePane() throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/http_round_trip_message.fxml")); fxmlLoader.setRoot(this); fxmlLoader.setController(this); fxmlLoader.load(); } @FXML private void initialize() { httpMessage.addListener((o, old, newValue) -> { requestBodyPane.setHeaders(newValue.requestHeader()); responseBodyPane.setHeaders(newValue.responseHeader()); requestBodyPane.setBody(newValue.requestBody()); responseBodyPane.setBody(newValue.responseBody()); }); } public void setHttpMessage(HttpMessage httpMessage) { this.httpMessage.set(httpMessage); } @FXML private void copyAsCurl(ActionEvent e) { copyRequestAsCurl(httpMessage.get()); } @FXML private void copyAsPython(ActionEvent e) { copyRequestAsPython(httpMessage.get()); } @FXML private void copyAsJava(ActionEvent e) { copyRequestAsJava(httpMessage.get()); } }