package com.szmirren.controller; import java.net.URL; import java.util.List; import java.util.ResourceBundle; import org.apache.log4j.Logger; import com.szmirren.Main; import com.szmirren.common.ConfigUtil; import com.szmirren.common.LanguageKey; import com.szmirren.models.HistoryConfigCVF; import com.szmirren.options.HistoryConfig; import com.szmirren.view.AlertUtil; import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.layout.HBox; public class HistoryConfigController extends BaseController { private Logger LOG = Logger.getLogger(this.getClass()); private IndexController indexController; /** 配置信息表 */ @FXML private TableView<HistoryConfigCVF> tblConfigInfo; /** 提示语言 */ @FXML private Label lblTips; @Override public void initialize(URL location, ResourceBundle resources) { initTable(); } /** * 初始化配置table */ public void initTable() { LOG.debug("初始化配置信息窗口...."); LOG.debug("初始化配置信息表格..."); ObservableList<HistoryConfigCVF> data = null; try { data = getHistoryConfig(); } catch (Exception e) { tblConfigInfo.setPlaceholder(new Label("加载配置文件失败!失败原因:\r\n" + e.getMessage())); LOG.error("初始化配置信息表格出现异常!!!" + e); } TableColumn<HistoryConfigCVF, String> tdInfo = new TableColumn<HistoryConfigCVF, String>("配置信息文件名"); tdInfo.textProperty().bind(Main.LANGUAGE.get(LanguageKey.CONFIG_TD_INFO)); TableColumn<HistoryConfigCVF, String> tdOperation = new TableColumn<HistoryConfigCVF, String>("操作"); tdOperation.textProperty().bind(Main.LANGUAGE.get(LanguageKey.CONFIG_TD_OPERATION)); tdInfo.setCellValueFactory(new PropertyValueFactory<>("name")); tdOperation.setCellValueFactory(new PropertyValueFactory<>("hbox")); tblConfigInfo.getColumns().add(tdInfo); tblConfigInfo.getColumns().add(tdOperation); tblConfigInfo.setItems(data); StringProperty property = Main.LANGUAGE.get(LanguageKey.HISTORY_CONFIG_TABLE_TIPS); String tips = property == null ? "尚未添加任何配置信息;可以通过首页保存配置新增" : property.get(); tblConfigInfo.setPlaceholder(new Label(tips)); // 设置列的大小自适应 tblConfigInfo.setColumnResizePolicy(resize -> { double width = resize.getTable().getWidth(); tdInfo.setPrefWidth(width * 2 / 3); tdOperation.setPrefWidth(width / 3); return true; }); lblTips.textProperty().bind(Main.LANGUAGE.get(LanguageKey.CONFIG_LBL_TIPS)); LOG.debug("初始化配置信息完成!"); LOG.debug("初始化配置信息窗口完成!"); } /** * 获得配置文件Table 特别注意,条件添加的关系,加载与删除配置需要在这里面操作 * * @return * @throws Exception */ public ObservableList<HistoryConfigCVF> getHistoryConfig() throws Exception { ObservableList<HistoryConfigCVF> result = FXCollections.observableArrayList(); List<HistoryConfig> item = ConfigUtil.getHistoryConfigs(); // 遍历配置文件并加载到工厂里面,同时给操作配置文件的加载与删除 for (HistoryConfig tmp : item) { String configName = tmp.getHistoryConfigName(); HBox box = new HBox(); box.setSpacing(15); Button button = new Button("加载配置"); button.textProperty().bind(Main.LANGUAGE.get(LanguageKey.CONFIG_BTN_LOAD)); button.setUserData(tmp.getHistoryConfigName()); button.setOnAction(Event -> { try { LOG.debug("执行将配置信息加载到首页..."); indexController.loadIndexConfigInfo(button.getUserData().toString()); closeDialogStage(); LOG.debug("将配置信息加载到首页成功!"); } catch (Exception e) { AlertUtil.showErrorAlert("加载配置失败!失败原因:\r\n" + e.getMessage()); LOG.error("将配置信息加载到首页失败!!!" + e); } }); Button button1 = new Button("删除配置"); button1.textProperty().bind(Main.LANGUAGE.get(LanguageKey.CONFIG_BTN_DATELE)); button1.setUserData(tmp.getHistoryConfigName()); button1.setOnAction(Event -> { if (AlertUtil.showConfirmAlert("确定删除吗?")) { try { LOG.debug("执行删除配置信息..."); ConfigUtil.deleteHistoryConfigByName(button1.getUserData().toString()); for (int i = 0; i < tblConfigInfo.getItems().size(); i++) { if (tblConfigInfo.getItems().get(i).getName().equals(button1.getUserData().toString())) { tblConfigInfo.getItems().remove(i); break; } } LOG.debug("执行删除配置完成!"); } catch (Exception e) { AlertUtil.showErrorAlert("删除失败!失败原因:\r\n" + e.getMessage()); LOG.error("执行删除配置失败!!!" + e); } } }); box.getChildren().addAll(button, button1); HistoryConfigCVF cvf = new HistoryConfigCVF(configName, box); result.add(cvf); } return result; } // -------------------get/set------------------------------ public IndexController getIndexController() { return indexController; } public void setIndexController(IndexController indexController) { this.indexController = indexController; } public TableView<HistoryConfigCVF> getTblConfigInfo() { return tblConfigInfo; } public void setTblConfigInfo(TableView<HistoryConfigCVF> tblConfigInfo) { this.tblConfigInfo = tblConfigInfo; } }