refactor(ui): 重构表格单元格渲染逻辑
- 新增 BankTableCell、DepartmentTableCell 等通用表格单元格类 - 优化 CompanyTableCell 结构,提高可复用性 - 在 CompanyTabSkinBankAccount 和 CompanyTabSkinContract 中使用新的表格单元格类 - 更新 EmployeeManagerSkin 中的部门列渲染方式
This commit is contained in:
@@ -9,6 +9,7 @@ import com.ecep.contract.manager.ds.other.service.BankService;
|
||||
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
|
||||
import com.ecep.contract.manager.ui.FxmlPath;
|
||||
import com.ecep.contract.manager.ui.tab.TabSkin;
|
||||
import com.ecep.contract.manager.ui.table.cell.BankTableCell;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.input.KeyCode;
|
||||
import lombok.Setter;
|
||||
@@ -58,21 +59,7 @@ public class CompanyTabSkinBankAccount
|
||||
|
||||
bankAccountTable_idColumn.setCellValueFactory(param -> param.getValue().getId());
|
||||
bankAccountTable_bankColumn.setCellValueFactory(param -> param.getValue().getBank());
|
||||
bankAccountTable_bankColumn.setCellFactory(param -> new TableCell<>() {
|
||||
@Override
|
||||
protected void updateItem(Bank item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
if (empty || item == null) {
|
||||
setText(null);
|
||||
return;
|
||||
}
|
||||
if (!Hibernate.isInitialized(item)) {
|
||||
item = getBankService().findById(item.getId());
|
||||
setItem(item);
|
||||
}
|
||||
setText(item.getName());
|
||||
}
|
||||
});
|
||||
bankAccountTable_bankColumn.setCellFactory(param -> new BankTableCell<>(getBankService()));
|
||||
|
||||
bankAccountTable_openingBankColumn.setCellValueFactory(param -> param.getValue().getOpeningBank());
|
||||
bankAccountTable_accountColumn.setCellValueFactory(param -> param.getValue().getAccount());
|
||||
|
||||
@@ -2,27 +2,24 @@ package com.ecep.contract.manager.ds.company.controller;
|
||||
|
||||
import com.ecep.contract.manager.cloud.u8.YongYouU8Service;
|
||||
import com.ecep.contract.manager.ds.company.model.Company;
|
||||
import com.ecep.contract.manager.ds.contract.service.ContractGroupService;
|
||||
import com.ecep.contract.manager.ds.contract.service.ContractKindService;
|
||||
import com.ecep.contract.manager.ds.contract.service.ContractTypeService;
|
||||
import com.ecep.contract.manager.ui.table.cell.ContractGroupTableCell;
|
||||
import com.ecep.contract.manager.ui.table.cell.ContractKindTableCell;
|
||||
import com.ecep.contract.manager.ui.table.cell.ContractTypeTableCell;
|
||||
import com.ecep.contract.manager.ds.contract.controller.ContractWindowController;
|
||||
import com.ecep.contract.manager.ds.contract.model.Contract;
|
||||
import com.ecep.contract.manager.ds.contract.model.ContractGroup;
|
||||
import com.ecep.contract.manager.ds.contract.model.ContractKind;
|
||||
import com.ecep.contract.manager.ds.contract.model.ContractType;
|
||||
import com.ecep.contract.manager.ds.contract.service.ContractGroupService;
|
||||
import com.ecep.contract.manager.ds.contract.service.ContractKindService;
|
||||
import com.ecep.contract.manager.ds.contract.service.ContractService;
|
||||
import com.ecep.contract.manager.ds.contract.service.ContractTypeService;
|
||||
import com.ecep.contract.manager.ds.contract.tasker.ContractRepairByCompanyTask;
|
||||
import com.ecep.contract.manager.ds.contract.vo.ContractViewModel;
|
||||
import com.ecep.contract.manager.ds.other.EmployeeStringConverter;
|
||||
import com.ecep.contract.manager.ds.other.model.Employee;
|
||||
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
|
||||
import com.ecep.contract.manager.ui.FxmlPath;
|
||||
import com.ecep.contract.manager.ui.tab.TabSkin;
|
||||
import com.ecep.contract.manager.ui.table.EditableEntityTableTabSkin;
|
||||
import com.ecep.contract.manager.ui.table.cell.*;
|
||||
import com.ecep.contract.manager.ui.util.ContractGroupStringConverter;
|
||||
import com.ecep.contract.manager.ui.table.cell.LocalDateTimeTableCell;
|
||||
import com.ecep.contract.manager.util.DesktopUtils;
|
||||
import com.ecep.contract.manager.util.SpecificationUtils;
|
||||
import com.ecep.contract.manager.util.UITools;
|
||||
@@ -183,18 +180,18 @@ public class CompanyTabSkinContract
|
||||
contractTable_startDateColumn.setCellValueFactory(param -> param.getValue().getStartDate());
|
||||
contractTable_endDateColumn.setCellValueFactory(param -> param.getValue().getEndDate());
|
||||
contractTable_setupPersonColumn.setCellValueFactory(param -> param.getValue().getSetupPerson());
|
||||
contractTable_setupPersonColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter()));
|
||||
contractTable_setupPersonColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
|
||||
|
||||
contractTable_setupDateColumn.setCellValueFactory(param -> param.getValue().getSetupDate());
|
||||
// contractTable_setupDateColumn.setSortable(true);
|
||||
// contractTable_setupDateColumn.setSortType(TableColumn.SortType.DESCENDING);
|
||||
contractTable_inurePersonColumn.setCellValueFactory(param -> param.getValue().getInurePerson());
|
||||
contractTable_inurePersonColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter()));
|
||||
contractTable_inurePersonColumn.setCellFactory(param -> new EmployeeTableCell<>(getEmployeeService()));
|
||||
|
||||
contractTable_inureDateColumn.setCellValueFactory(param -> param.getValue().getInureDate());
|
||||
|
||||
contractTable_varyPersonColumn.setCellValueFactory(param -> param.getValue().getVaryPerson());
|
||||
contractTable_varyPersonColumn.setCellFactory(TextFieldTableCell.forTableColumn(getEmployeeStringConverter()));
|
||||
contractTable_varyPersonColumn.setCellFactory(param->new EmployeeTableCell<>(getEmployeeService()));
|
||||
|
||||
contractTable_varyDateColumn.setCellValueFactory(param -> param.getValue().getVaryDate());
|
||||
contractTable_createdColumn.setCellValueFactory(param -> param.getValue().getCreated());
|
||||
@@ -264,18 +261,20 @@ public class CompanyTabSkinContract
|
||||
return contractService;
|
||||
}
|
||||
|
||||
private ContractTypeService getContractTypeService() {
|
||||
private ContractTypeService getContractTypeService() {
|
||||
if (contractTypeService == null) {
|
||||
contractTypeService = getBean(ContractTypeService.class);
|
||||
}
|
||||
return contractTypeService;
|
||||
}
|
||||
|
||||
private ContractKindService getContractKindService() {
|
||||
if (contractKindService == null) {
|
||||
contractKindService = getBean(ContractKindService.class);
|
||||
}
|
||||
return contractKindService;
|
||||
}
|
||||
|
||||
private ContractGroupService getContractGroupService() {
|
||||
if (contractGroupService == null) {
|
||||
contractGroupService = getBean(ContractGroupService.class);
|
||||
|
||||
@@ -7,10 +7,10 @@ import com.ecep.contract.manager.ds.other.service.DepartmentService;
|
||||
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
|
||||
import com.ecep.contract.manager.ui.AbstEntityManagerSkin;
|
||||
import com.ecep.contract.manager.ui.ManagerSkin;
|
||||
import com.ecep.contract.manager.ui.table.cell.DepartmentTableCell;
|
||||
import com.ecep.contract.manager.util.SpecificationUtils;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.scene.control.cell.CheckBoxTableCell;
|
||||
import javafx.scene.control.cell.ComboBoxTableCell;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
|
||||
public class EmployeeManagerSkin
|
||||
@@ -20,6 +20,15 @@ public class EmployeeManagerSkin
|
||||
super(controller);
|
||||
}
|
||||
|
||||
DepartmentService departmentService;
|
||||
|
||||
DepartmentService getDepartmentService() {
|
||||
if (departmentService == null) {
|
||||
departmentService = getBean(DepartmentService.class);
|
||||
}
|
||||
return departmentService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Specification<Employee> getSpecification() {
|
||||
Specification<Employee> spec = super.getSpecification();
|
||||
@@ -33,12 +42,6 @@ public class EmployeeManagerSkin
|
||||
|
||||
@Override
|
||||
public void initializeTable() {
|
||||
EntityStringConverter<Department> departmentStringConverter = new EntityStringConverter<>();
|
||||
DepartmentService departmentService = getBean(DepartmentService.class);
|
||||
departmentStringConverter.setInitialized(department -> {
|
||||
return departmentService.findById(department.getId());
|
||||
});
|
||||
|
||||
controller.idColumn.setCellValueFactory(param -> param.getValue().getId());
|
||||
controller.nameColumn.setCellValueFactory(param -> param.getValue().getName());
|
||||
controller.aliasColumn.setCellValueFactory(param -> param.getValue().getAlias());
|
||||
@@ -46,7 +49,7 @@ public class EmployeeManagerSkin
|
||||
controller.accountColumn.setCellValueFactory(param -> param.getValue().getAccount());
|
||||
|
||||
controller.departmentColumn.setCellValueFactory(param -> param.getValue().getDepartment());
|
||||
controller.departmentColumn.setCellFactory(ComboBoxTableCell.forTableColumn(departmentStringConverter));
|
||||
controller.departmentColumn.setCellFactory(param -> new DepartmentTableCell<>(getDepartmentService()));
|
||||
|
||||
|
||||
controller.emailColumn.setCellValueFactory(param -> param.getValue().getEmail());
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.ecep.contract.manager.ui.table.cell;
|
||||
|
||||
import com.ecep.contract.manager.SpringApp;
|
||||
import com.ecep.contract.manager.ds.other.model.Bank;
|
||||
import com.ecep.contract.manager.ds.other.service.BankService;
|
||||
import com.ecep.contract.manager.ds.other.service.IEntityService;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public class BankTableCell<T> extends AsyncUpdateTableCell<T, Bank> {
|
||||
public BankTableCell(BankService service) {
|
||||
setService(service);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IEntityService<Bank> getServiceBean() {
|
||||
return SpringApp.getBean(BankService.class);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,21 +2,19 @@ package com.ecep.contract.manager.ui.table.cell;
|
||||
|
||||
import com.ecep.contract.manager.ds.company.model.Company;
|
||||
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
||||
import com.ecep.contract.manager.ui.ViewModelService;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import static com.ecep.contract.manager.SpringApp.getBean;
|
||||
|
||||
@NoArgsConstructor
|
||||
public class CompanyTableCell<V> extends AsyncUpdateTableCell<V, Company> {
|
||||
|
||||
public CompanyTableCell() {
|
||||
}
|
||||
|
||||
public CompanyTableCell(CompanyService companyService) {
|
||||
setService(companyService);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ViewModelService<Company, ?> getServiceBean() {
|
||||
protected CompanyService getServiceBean() {
|
||||
return getBean(CompanyService.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.ecep.contract.manager.ui.table.cell;
|
||||
|
||||
import com.ecep.contract.manager.SpringApp;
|
||||
import com.ecep.contract.manager.ds.other.model.Bank;
|
||||
import com.ecep.contract.manager.ds.other.model.Department;
|
||||
import com.ecep.contract.manager.ds.other.service.BankService;
|
||||
import com.ecep.contract.manager.ds.other.service.DepartmentService;
|
||||
import com.ecep.contract.manager.ds.other.service.IEntityService;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor
|
||||
public class DepartmentTableCell<T> extends AsyncUpdateTableCell<T, Department> {
|
||||
public DepartmentTableCell(DepartmentService service) {
|
||||
setService(service);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IEntityService<Department> getServiceBean() {
|
||||
return SpringApp.getBean(DepartmentService.class);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user