优化代码结构
This commit is contained in:
239
src/main/java/com/dayrain/views/ServerPane.java
Normal file
239
src/main/java/com/dayrain/views/ServerPane.java
Normal file
@@ -0,0 +1,239 @@
|
||||
package com.dayrain.views;
|
||||
|
||||
import com.dayrain.component.ConfigHolder;
|
||||
import com.dayrain.component.ConsoleLog;
|
||||
import com.dayrain.component.RequestType;
|
||||
import com.dayrain.component.Server;
|
||||
import com.dayrain.component.ServerConfig;
|
||||
|
||||
import com.dayrain.component.ServerThreadHolder;
|
||||
import com.dayrain.component.ServerUrl;
|
||||
import com.dayrain.server.ServerThread;
|
||||
import com.dayrain.style.BackGroundFactory;
|
||||
import com.dayrain.style.ButtonFactory;
|
||||
|
||||
import com.dayrain.style.CircleFactory;
|
||||
import com.dayrain.style.FormFactory;
|
||||
import com.dayrain.style.IconFactory;
|
||||
import com.dayrain.style.LabelFactory;
|
||||
import com.dayrain.style.StageFactory;
|
||||
import com.dayrain.utils.ListViewHelper;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ButtonType;
|
||||
import javafx.scene.control.ChoiceBox;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.control.TitledPane;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.VBox;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.scene.shape.Circle;
|
||||
import javafx.scene.text.Font;
|
||||
import javafx.stage.Modality;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* server容器
|
||||
* @author peng
|
||||
* @date 2021/11/11
|
||||
*/
|
||||
public class ServerPane extends TitledPane {
|
||||
|
||||
private final ServerConfig serverConfig;
|
||||
|
||||
private ServerUrlListView serverUrlListView;
|
||||
|
||||
private final Circle statusCircle;
|
||||
private final Button editButton;
|
||||
private final Button openButton;
|
||||
private final Button deleteButton;
|
||||
private final Button addButton;
|
||||
|
||||
public ServerPane(ServerConfig serverConfig) {
|
||||
this.serverConfig = serverConfig;
|
||||
this.statusCircle = CircleFactory.getLightCircle(ServerThreadHolder.contains(serverConfig.getServerName()) ? Color.GREEN : Color.RED);
|
||||
this.editButton = ButtonFactory.getButton("修改配置");
|
||||
this.openButton = ButtonFactory.getButton("开启服务");
|
||||
this.deleteButton = ButtonFactory.getButton("删除服务");
|
||||
this.addButton = ButtonFactory.getButton("添加接口");
|
||||
createView();
|
||||
}
|
||||
|
||||
public void createView() {
|
||||
VBox vBox = new VBox();
|
||||
HBox headBox = new HBox();
|
||||
//设置服务启动与关闭
|
||||
openButton.setOnAction(this::startServer);
|
||||
editButton.setOnAction(this::updateServer);
|
||||
deleteButton.setOnAction(this::deleteSever);
|
||||
headBox.getChildren().addAll(openButton, editButton, deleteButton, addButton, statusCircle);
|
||||
HBox.setMargin(statusCircle, new Insets(0, 0, 0, 30));
|
||||
headBox.setSpacing(20d);
|
||||
headBox.setAlignment(Pos.CENTER);
|
||||
|
||||
//添加url
|
||||
this.serverUrlListView = new ServerUrlListView(serverConfig);
|
||||
addButton.setOnAction(this::addUrl);
|
||||
vBox.getChildren().addAll(headBox, serverUrlListView);
|
||||
|
||||
vBox.setSpacing(10d);
|
||||
VBox.setMargin(headBox, new Insets(10, 0, 0, 0));
|
||||
vBox.setPadding(Insets.EMPTY);
|
||||
setText(serverConfig.getServerName());
|
||||
this.setContent(vBox);
|
||||
this.setFont(Font.font("Microsoft YaHei", 18));
|
||||
this.setPrefWidth(600d);
|
||||
this.setExpanded(false);
|
||||
this.setBackground(BackGroundFactory.getBackGround());
|
||||
this.setOnMouseClicked(event -> {
|
||||
if (!serverConfig.getServerName().equals(ViewHolder.getLogArea().getServerName())) {
|
||||
ConsoleLog.resetTextArea(serverConfig.getServerName());
|
||||
}
|
||||
});
|
||||
|
||||
HBox hBox = new HBox();
|
||||
hBox.setPrefHeight(60d);
|
||||
this.setGraphic(hBox);
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动服务
|
||||
*/
|
||||
private void startServer(ActionEvent evt) {
|
||||
String serverName = serverConfig.getServerName();
|
||||
if (ServerThreadHolder.contains(serverName)) {
|
||||
ServerThreadHolder.remove(serverName);
|
||||
openButton.setText("开启服务");
|
||||
statusCircle.setFill(Color.RED);
|
||||
} else {
|
||||
ServerThreadHolder.add(serverName, new ServerThread(new Server(serverConfig)));
|
||||
openButton.setText("关闭服务");
|
||||
statusCircle.setFill(Color.GREEN);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新服务
|
||||
*/
|
||||
private void updateServer(ActionEvent evt) {
|
||||
Label serverName = LabelFactory.getLabel("服务名称:");
|
||||
serverName.setPrefWidth(80);
|
||||
TextField nameField = new TextField(serverConfig.getServerName());
|
||||
Label portLabel = LabelFactory.getLabel("端口:");
|
||||
TextField portField = new TextField(String.valueOf(serverConfig.getPort()));
|
||||
portField.setPrefWidth(80);
|
||||
|
||||
HBox btnHBox = new HBox();
|
||||
Label saveTips = LabelFactory.getLabel("重启后生效");
|
||||
Button saveButton = ButtonFactory.getButton("保存");
|
||||
btnHBox.getChildren().addAll(saveTips, saveButton);
|
||||
btnHBox.setAlignment(Pos.CENTER_RIGHT);
|
||||
btnHBox.setSpacing(20d);
|
||||
|
||||
GridPane gridPane = new GridPane();
|
||||
gridPane.add(serverName, 0, 0);
|
||||
gridPane.add(nameField, 1, 0);
|
||||
gridPane.add(portLabel, 0, 1);
|
||||
gridPane.add(portField, 1, 1);
|
||||
|
||||
gridPane.add(btnHBox, 1, 3);
|
||||
gridPane.setAlignment(Pos.CENTER);
|
||||
gridPane.setHgap(20d);
|
||||
gridPane.setVgap(10d);
|
||||
|
||||
Stage stage = StageFactory.getPopStage("更新服务配置", new Scene(gridPane));
|
||||
stage.show();
|
||||
|
||||
saveButton.setOnAction(event -> {
|
||||
String name = nameField.getText();
|
||||
int port = Integer.parseInt(portField.getText());
|
||||
serverConfig.setPort(port);
|
||||
serverConfig.setServerName(name);
|
||||
ConfigHolder.save();
|
||||
stage.close();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除服务
|
||||
*/
|
||||
private void deleteSever(ActionEvent evt) {
|
||||
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
|
||||
alert.setGraphic(new ImageView(IconFactory.getIcon()));
|
||||
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
|
||||
stage.getIcons().add(IconFactory.getIcon());
|
||||
alert.setHeaderText("是否确定删除该服务?");
|
||||
Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK);
|
||||
okButton.setOnAction(event1 -> {
|
||||
ConfigHolder.get().getServerConfigs().remove(serverConfig);
|
||||
ViewHolder.getServerContainer().refresh();
|
||||
ConfigHolder.save();
|
||||
});
|
||||
alert.show();
|
||||
}
|
||||
|
||||
private void addUrl(ActionEvent evt) {
|
||||
VBox vBox = new VBox();
|
||||
|
||||
Label nameLabel = LabelFactory.getLabel("接口名称:");
|
||||
TextField nameField = new TextField();
|
||||
HBox hBox1 = FormFactory.getLine(nameLabel, nameField, 120, 300, 500);
|
||||
|
||||
Label urlLabel = LabelFactory.getLabel("接口地址:");
|
||||
TextField urlField = new TextField();
|
||||
HBox hBox2 = FormFactory.getLine(urlLabel, urlField, 120, 300, 500);
|
||||
|
||||
Label typeLabel = LabelFactory.getLabel("请求方式:");
|
||||
ChoiceBox<String> choiceBox = new ChoiceBox<>();
|
||||
choiceBox.setItems(FXCollections.observableArrayList("POST", "GET"));
|
||||
choiceBox.setValue("POST");
|
||||
HBox hBox3 = FormFactory.getLine(typeLabel, choiceBox, 120, 70, 500);
|
||||
|
||||
Label respLabel = LabelFactory.getLabel("返回结果:");
|
||||
TextArea textArea = new TextArea();
|
||||
HBox hBox4 = FormFactory.getLine(respLabel, textArea, 120, 300, 500);
|
||||
|
||||
Button saveButton = ButtonFactory.getButton("保存");
|
||||
HBox hBox5 = FormFactory.getButtonLine(saveButton, 120, 500);
|
||||
|
||||
vBox.getChildren().addAll(hBox1, hBox2, hBox3, hBox4, hBox5);
|
||||
vBox.setSpacing(20d);
|
||||
vBox.setAlignment(Pos.CENTER);
|
||||
|
||||
Stage stage = StageFactory.getPopStage("新增接口信息", new Scene(vBox));
|
||||
stage.show();
|
||||
|
||||
saveButton.setOnAction(event1 -> {
|
||||
String name = nameField.getText();
|
||||
List<ServerUrl> serverUrls = serverConfig.getServerUrls();
|
||||
for (ServerUrl serverUrl : serverUrls) {
|
||||
if (serverUrl.getUrlName().equals(name)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
String url = urlField.getText();
|
||||
String resp = textArea.getText();
|
||||
|
||||
String type = choiceBox.getValue();
|
||||
ServerUrl serverUrl = new ServerUrl(serverConfig.getServerName(), name, url, type.equals(RequestType.POST.name()) ? RequestType.POST : RequestType.GET, resp);
|
||||
serverUrls.add(serverUrl);
|
||||
ServerThreadHolder.addUrl(serverUrl);
|
||||
ListViewHelper.addAndRefresh(serverUrl, serverUrlListView);
|
||||
ConfigHolder.save();
|
||||
stage.close();
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user