refactor: 将Desktop功能重构到DesktopUtils类中
重构Desktop类的浏览器和文件资源管理器功能到新的DesktopUtils工具类,提高代码可维护性 修改多处调用点使用新的工具类方法 更新数据库连接默认主机地址 为CurrentEmployee类添加@ToString注解
This commit is contained in:
@@ -25,7 +25,7 @@ public class AppV2 {
|
|||||||
System.out.println("AppV2.done");
|
System.out.println("AppV2.done");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String DEFAULT_DB_HOST = "10.84.209.145"; // "db-server1.ecctrl.com"
|
public static final String DEFAULT_DB_HOST = "10.84.209.154"; // "db-server1.ecctrl.com"
|
||||||
public static final String DEFAULT_DB_PORT = "3306";
|
public static final String DEFAULT_DB_PORT = "3306";
|
||||||
public static final String DEFAULT_DB_USERNAME = "supplier_ms";
|
public static final String DEFAULT_DB_USERNAME = "supplier_ms";
|
||||||
public static final String DEFAULT_DB_PASSWORD = "[TPdseO!JKMmlrpf";
|
public static final String DEFAULT_DB_PASSWORD = "[TPdseO!JKMmlrpf";
|
||||||
|
|||||||
@@ -1,25 +1,29 @@
|
|||||||
package com.ecep.contract.manager;
|
package com.ecep.contract.manager;
|
||||||
|
|
||||||
import com.ecep.contract.manager.ds.other.model.Employee;
|
|
||||||
import com.ecep.contract.manager.ds.other.model.EmployeeRole;
|
|
||||||
import com.ecep.contract.manager.ds.other.service.EmployeeService;
|
|
||||||
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
|
|
||||||
import javafx.application.Platform;
|
|
||||||
import javafx.beans.property.SimpleListProperty;
|
|
||||||
import javafx.beans.property.SimpleObjectProperty;
|
|
||||||
import javafx.collections.FXCollections;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.ds.other.model.Employee;
|
||||||
|
import com.ecep.contract.manager.ds.other.model.EmployeeRole;
|
||||||
|
import com.ecep.contract.manager.ds.other.service.EmployeeService;
|
||||||
|
import com.ecep.contract.manager.ds.other.vo.EmployeeViewModel;
|
||||||
|
|
||||||
|
import javafx.application.Platform;
|
||||||
|
import javafx.beans.property.SimpleListProperty;
|
||||||
|
import javafx.beans.property.SimpleObjectProperty;
|
||||||
|
import javafx.collections.FXCollections;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当前登录用户
|
* 当前登录用户
|
||||||
*/
|
*/
|
||||||
|
@ToString(of = {"id", "name", "email", "phone", "roles"})
|
||||||
public class CurrentEmployee extends EmployeeViewModel {
|
public class CurrentEmployee extends EmployeeViewModel {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(CurrentEmployee.class);
|
private static final Logger logger = LoggerFactory.getLogger(CurrentEmployee.class);
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import lombok.Getter;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
@@ -31,7 +30,6 @@ import java.net.URL;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
import java.util.function.Consumer;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,74 +39,9 @@ import java.util.logging.Level;
|
|||||||
* Created by ecep on 2017/05/08.
|
* Created by ecep on 2017/05/08.
|
||||||
*/
|
*/
|
||||||
public class Desktop extends Application {
|
public class Desktop extends Application {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(Desktop.class);
|
public static final Logger logger = LoggerFactory.getLogger(Desktop.class);
|
||||||
public static Desktop instance;
|
public static Desktop instance;
|
||||||
|
|
||||||
/**
|
|
||||||
* 在默认浏览器中打开指定的URL。
|
|
||||||
* <p>
|
|
||||||
* 该函数使用JavaFX的HostServices类来调用系统默认的浏览器,并打开传入的URL。
|
|
||||||
*
|
|
||||||
* @param url 要在浏览器中打开的URL字符串。该参数不能为空,且应为有效的URL格式。
|
|
||||||
*/
|
|
||||||
public static void showInBrowse(String url) {
|
|
||||||
instance.getHostServices().showDocument(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在系统的文件资源管理器中打开指定的文件夹。
|
|
||||||
* <p>
|
|
||||||
* 该方法首先尝试使用 java.awt.Desktop API 打开文件夹。如果该 API 不支持,
|
|
||||||
* 则在 Windows 系统中使用 explorer.exe 打开文件夹。
|
|
||||||
*
|
|
||||||
* @param dir 要打开的文件夹对象。如果为 null 或无效路径,可能会抛出异常。
|
|
||||||
* @throws RuntimeException 如果使用 java.awt.Desktop 打开文件夹时发生 IOException,
|
|
||||||
* 则将其包装为 RuntimeException 抛出。
|
|
||||||
*/
|
|
||||||
public static void showInExplorer(File dir) {
|
|
||||||
if (java.awt.Desktop.isDesktopSupported()) {
|
|
||||||
try {
|
|
||||||
java.awt.Desktop.getDesktop().open(dir);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
// 在Windows中使用explorer.exe打开文件夹,路径用双引号括起来
|
|
||||||
Process process = Runtime.getRuntime().exec(
|
|
||||||
new String[] { "explorer.exe", "\"" + dir.getAbsolutePath() + "\"" }, null, new File("."));
|
|
||||||
// process.waitFor();
|
|
||||||
} catch (IOException e) {
|
|
||||||
if (logger.isDebugEnabled()) {
|
|
||||||
logger.debug("Unable open {}", dir.getAbsolutePath(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void checkAndShowInExplorer(String path, Consumer<String> consumer) {
|
|
||||||
if (!StringUtils.hasText(path)) {
|
|
||||||
consumer.accept("文件/目录为空,无法打开");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
File file = new File(path);
|
|
||||||
if (!file.exists()) {
|
|
||||||
if (file.isFile()) {
|
|
||||||
consumer.accept("文件 " + file.getAbsolutePath() + " 不存在,请确认");
|
|
||||||
} else {
|
|
||||||
consumer.accept("目录 " + file.getAbsolutePath() + " 不存在,请确认");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
Desktop.showInExplorer(file);
|
|
||||||
consumer.accept("打开文件/目录 " + path);
|
|
||||||
} catch (Exception e) {
|
|
||||||
consumer.accept("打开文件错误:" + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void shutdown() {
|
public static void shutdown() {
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug("shutdown");
|
logger.debug("shutdown");
|
||||||
@@ -249,7 +182,6 @@ public class Desktop extends Application {
|
|||||||
|
|
||||||
beanFactory.registerSingleton("scheduledExecutorService", getExecutorService());
|
beanFactory.registerSingleton("scheduledExecutorService", getExecutorService());
|
||||||
beanFactory.registerSingleton("taskMonitorCenter", taskMonitorCenter);
|
beanFactory.registerSingleton("taskMonitorCenter", taskMonitorCenter);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,17 +1,26 @@
|
|||||||
package com.ecep.contract.manager;
|
package com.ecep.contract.manager;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import java.io.BufferedReader;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import java.io.BufferedWriter;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import java.io.File;
|
||||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
import java.io.FileReader;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.*;
|
|
||||||
import java.net.CookieStore;
|
import java.net.CookieStore;
|
||||||
import java.net.HttpCookie;
|
import java.net.HttpCookie;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
|
|
||||||
public class MyPersistentCookieStore implements CookieStore {
|
public class MyPersistentCookieStore implements CookieStore {
|
||||||
|
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ public class CloudTycService implements ViewModelService<CloudTyc, CloudTycInfoV
|
|||||||
|
|
||||||
String url = baseUrl + cloudId;
|
String url = baseUrl + cloudId;
|
||||||
|
|
||||||
com.ecep.contract.manager.Desktop.showInBrowse(url);
|
com.ecep.contract.manager.util.DesktopUtils.showInBrowse(url);
|
||||||
|
|
||||||
// UITools.showExceptionAndWait("使用浏览器打开网址出现异常", e);
|
// UITools.showExceptionAndWait("使用浏览器打开网址出现异常", e);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.company.controller;
|
package com.ecep.contract.manager.ds.company.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.cloud.u8.YongYouU8Service;
|
import com.ecep.contract.manager.cloud.u8.YongYouU8Service;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
import com.ecep.contract.manager.ds.contract.controller.ContractGroupTableCell;
|
import com.ecep.contract.manager.ds.contract.controller.ContractGroupTableCell;
|
||||||
@@ -21,6 +20,7 @@ import com.ecep.contract.manager.ui.FxmlPath;
|
|||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
import com.ecep.contract.manager.ui.util.ContractGroupStringConverter;
|
import com.ecep.contract.manager.ui.util.ContractGroupStringConverter;
|
||||||
import com.ecep.contract.manager.ui.util.LocalDateTimeTableCell;
|
import com.ecep.contract.manager.ui.util.LocalDateTimeTableCell;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.SpecificationUtils;
|
import com.ecep.contract.manager.util.SpecificationUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
@@ -236,7 +236,7 @@ public class CompanyTabSkinContract
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
setStatus("打开文件/目录 " + path);
|
setStatus("打开文件/目录 " + path);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
setStatus("打开文件错误:" + e.getMessage());
|
setStatus("打开文件错误:" + e.getMessage());
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.company.controller;
|
package com.ecep.contract.manager.ds.company.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.MyProperties;
|
import com.ecep.contract.manager.MyProperties;
|
||||||
import com.ecep.contract.manager.cloud.tyc.CloudTycService;
|
import com.ecep.contract.manager.cloud.tyc.CloudTycService;
|
||||||
import com.ecep.contract.manager.ds.company.CompanyFileType;
|
import com.ecep.contract.manager.ds.company.CompanyFileType;
|
||||||
@@ -12,6 +11,7 @@ import com.ecep.contract.manager.ds.company.vo.CompanyFileViewModel;
|
|||||||
import com.ecep.contract.manager.ui.EditableEntityTableTabSkin;
|
import com.ecep.contract.manager.ui.EditableEntityTableTabSkin;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -343,7 +343,7 @@ public class CompanyTabSkinFile
|
|||||||
setStatus("文件不存在 " + file.getName());
|
setStatus("文件不存在 " + file.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.company.controller;
|
package com.ecep.contract.manager.ds.company.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.cloud.rk.CloudRk;
|
import com.ecep.contract.manager.cloud.rk.CloudRk;
|
||||||
import com.ecep.contract.manager.cloud.rk.CloudRkInfoViewModel;
|
import com.ecep.contract.manager.cloud.rk.CloudRkInfoViewModel;
|
||||||
import com.ecep.contract.manager.cloud.rk.CloudRkService;
|
import com.ecep.contract.manager.cloud.rk.CloudRkService;
|
||||||
@@ -19,6 +18,7 @@ import com.ecep.contract.manager.ui.FxmlPath;
|
|||||||
import com.ecep.contract.manager.ui.MessageHolder;
|
import com.ecep.contract.manager.ui.MessageHolder;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
import com.ecep.contract.manager.ui.util.DelayOnceExecutor;
|
import com.ecep.contract.manager.ui.util.DelayOnceExecutor;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -376,7 +376,7 @@ public class CompanyTabSkinOther
|
|||||||
Company company = getEntity();
|
Company company = getEntity();
|
||||||
url = String.format(CloudTycService.URL_COMPANY_SEARCH, company.getName());
|
url = String.format(CloudTycService.URL_COMPANY_SEARCH, company.getName());
|
||||||
}
|
}
|
||||||
Desktop.showInBrowse(url);
|
DesktopUtils.showInBrowse(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTycCloudPaneHyperLinkInnerViewClickedAction(ActionEvent event) {
|
public void onTycCloudPaneHyperLinkInnerViewClickedAction(ActionEvent event) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.company.controller;
|
package com.ecep.contract.manager.ds.company.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.SpringApp;
|
import com.ecep.contract.manager.SpringApp;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyFileService;
|
import com.ecep.contract.manager.ds.company.service.CompanyFileService;
|
||||||
@@ -18,6 +17,7 @@ import com.ecep.contract.manager.ds.vendor.service.CompanyVendorService;
|
|||||||
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityController;
|
import com.ecep.contract.manager.ui.AbstEntityController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.beans.property.SimpleObjectProperty;
|
import javafx.beans.property.SimpleObjectProperty;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
@@ -307,7 +307,7 @@ public class CompanyWindowController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Desktop.checkAndShowInExplorer(company.getPath(), this::setStatus);
|
DesktopUtils.checkAndShowInExplorer(company.getPath(), this::setStatus);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.company.controller.old_name;
|
package com.ecep.contract.manager.ds.company.controller.old_name;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.MyProperties;
|
import com.ecep.contract.manager.MyProperties;
|
||||||
import com.ecep.contract.manager.ds.company.CompanyFileType;
|
import com.ecep.contract.manager.ds.company.CompanyFileType;
|
||||||
import com.ecep.contract.manager.ds.company.model.CompanyFile;
|
import com.ecep.contract.manager.ds.company.model.CompanyFile;
|
||||||
@@ -11,6 +10,7 @@ import com.ecep.contract.manager.ds.company.vo.CompanyFileViewModel;
|
|||||||
import com.ecep.contract.manager.ds.company.vo.CompanyOldNameViewModel;
|
import com.ecep.contract.manager.ds.company.vo.CompanyOldNameViewModel;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityTableTabSkin;
|
import com.ecep.contract.manager.ui.AbstEntityTableTabSkin;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.SpecificationUtils;
|
import com.ecep.contract.manager.util.SpecificationUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -318,7 +318,7 @@ public class CompanyOldNameTabSkinFile
|
|||||||
setStatus("文件不存在 " + file.getName());
|
setStatus("文件不存在 " + file.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.ecep.contract.manager.ds.company.vo.CompanyOldNameViewModel;
|
|||||||
import com.ecep.contract.manager.ui.AbstEntityController;
|
import com.ecep.contract.manager.ui.AbstEntityController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.ViewModelService;
|
import com.ecep.contract.manager.ui.ViewModelService;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
@@ -25,8 +26,6 @@ import org.springframework.util.StringUtils;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import static com.ecep.contract.manager.Desktop.showInExplorer;
|
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Scope("prototype")
|
@Scope("prototype")
|
||||||
@Component
|
@Component
|
||||||
@@ -125,7 +124,7 @@ public class CompanyOldNameWindowController extends AbstEntityController<Company
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
File file = new File(companyOldName.getPath());
|
File file = new File(companyOldName.getPath());
|
||||||
showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.contract.controller;
|
package com.ecep.contract.manager.ds.contract.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.SpringApp;
|
import com.ecep.contract.manager.SpringApp;
|
||||||
import com.ecep.contract.manager.cloud.u8.ctx.ContractCtx;
|
import com.ecep.contract.manager.cloud.u8.ctx.ContractCtx;
|
||||||
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
|
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
|
||||||
@@ -18,6 +17,7 @@ import com.ecep.contract.manager.ui.EditableEntityTableTabSkin;
|
|||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
import com.ecep.contract.manager.ui.util.LocalDateFieldTableCell;
|
import com.ecep.contract.manager.ui.util.LocalDateFieldTableCell;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
@@ -573,7 +573,7 @@ public class ContractTabSkinFiles
|
|||||||
setStatus("文件不存在 " + file.getName());
|
setStatus("文件不存在 " + file.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onFileTableContextMenuShowing(WindowEvent windowEvent) {
|
public void onFileTableContextMenuShowing(WindowEvent windowEvent) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.contract.controller;
|
package com.ecep.contract.manager.ds.contract.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController;
|
import com.ecep.contract.manager.ds.company.controller.CompanyWindowController;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
||||||
@@ -12,6 +11,7 @@ import com.ecep.contract.manager.ds.contract.vo.ContractViewModel;
|
|||||||
import com.ecep.contract.manager.ds.project.service.ProjectService;
|
import com.ecep.contract.manager.ds.project.service.ProjectService;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityController;
|
import com.ecep.contract.manager.ui.AbstEntityController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
@@ -184,7 +184,7 @@ public class ContractWindowController
|
|||||||
setStatus("目录错误,不存在");
|
setStatus("目录错误,不存在");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onContractOpenRelativeCompanyAction(ActionEvent event) {
|
public void onContractOpenRelativeCompanyAction(ActionEvent event) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.customer.controller;
|
package com.ecep.contract.manager.ds.customer.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyContactService;
|
import com.ecep.contract.manager.ds.company.service.CompanyContactService;
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
||||||
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer;
|
import com.ecep.contract.manager.ds.customer.model.CompanyCustomer;
|
||||||
@@ -9,6 +8,8 @@ import com.ecep.contract.manager.ds.customer.vo.CompanyCustomerViewModel;
|
|||||||
import com.ecep.contract.manager.ui.AbstEntityController;
|
import com.ecep.contract.manager.ui.AbstEntityController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.ViewModelService;
|
import com.ecep.contract.manager.ui.ViewModelService;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
@@ -115,7 +116,7 @@ public class CompanyCustomerWindowController extends AbstEntityController<Compan
|
|||||||
setStatus("目录错误,不存在");
|
setStatus("目录错误,不存在");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.customer.controller;
|
package com.ecep.contract.manager.ds.customer.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.SpringApp;
|
import com.ecep.contract.manager.SpringApp;
|
||||||
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
|
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
@@ -16,6 +15,7 @@ import com.ecep.contract.manager.ds.other.model.BaseEnumEntity;
|
|||||||
import com.ecep.contract.manager.ui.EditableEntityTableTabSkin;
|
import com.ecep.contract.manager.ui.EditableEntityTableTabSkin;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.Message;
|
import com.ecep.contract.manager.ui.Message;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.SpecificationUtils;
|
import com.ecep.contract.manager.util.SpecificationUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
@@ -160,7 +160,7 @@ public class CustomerTabSkinFile
|
|||||||
setStatus("文件不存在 " + file.getName());
|
setStatus("文件不存在 " + file.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void moveFileToCustomer(List<File> files) {
|
private void moveFileToCustomer(List<File> files) {
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import com.ecep.contract.manager.ds.vendor.controller.CompanyVendorManagerWindow
|
|||||||
import com.ecep.contract.manager.ui.BaseController;
|
import com.ecep.contract.manager.ui.BaseController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.task.TaskMonitorViewController;
|
import com.ecep.contract.manager.ui.task.TaskMonitorViewController;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.FxmlUtils;
|
import com.ecep.contract.manager.util.FxmlUtils;
|
||||||
|
|
||||||
import javafx.concurrent.Task;
|
import javafx.concurrent.Task;
|
||||||
@@ -173,7 +174,7 @@ public class HomeWindowController extends BaseController {
|
|||||||
public void openInBrowse(ActionEvent event) {
|
public void openInBrowse(ActionEvent event) {
|
||||||
MenuItem source = (MenuItem) event.getSource();
|
MenuItem source = (MenuItem) event.getSource();
|
||||||
String url = (String) source.getUserData();
|
String url = (String) source.getUserData();
|
||||||
Desktop.showInBrowse(url);
|
DesktopUtils.showInBrowse(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openGroupRKResourceWindow(ActionEvent event) {
|
public void openGroupRKResourceWindow(ActionEvent event) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.project.controller.bid;
|
package com.ecep.contract.manager.ds.project.controller.bid;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
|
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
||||||
@@ -29,6 +28,7 @@ import com.ecep.contract.manager.ds.project.service.ProjectService;
|
|||||||
import com.ecep.contract.manager.ds.project.vo.ProjectBidViewModel;
|
import com.ecep.contract.manager.ds.project.vo.ProjectBidViewModel;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -204,7 +204,7 @@ public class ProjectBidTabSkinBase
|
|||||||
|
|
||||||
controller.authorizationFileField.textProperty().bind(viewModel.getAuthorizationFile().map(File::getName));
|
controller.authorizationFileField.textProperty().bind(viewModel.getAuthorizationFile().map(File::getName));
|
||||||
controller.openAuthorizationFileBtn.setOnAction(event -> {
|
controller.openAuthorizationFileBtn.setOnAction(event -> {
|
||||||
Desktop.showInExplorer(viewModel.getAuthorizationFile().get());
|
DesktopUtils.showInExplorer(viewModel.getAuthorizationFile().get());
|
||||||
});
|
});
|
||||||
controller.openAuthorizationFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
|
controller.openAuthorizationFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
|
||||||
controller.changeAuthorizationFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
|
controller.changeAuthorizationFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
|
||||||
@@ -212,7 +212,7 @@ public class ProjectBidTabSkinBase
|
|||||||
controller.bidAcceptanceLetterFileField.textProperty()
|
controller.bidAcceptanceLetterFileField.textProperty()
|
||||||
.bind(viewModel.getBidAcceptanceLetterFile().map(File::getName));
|
.bind(viewModel.getBidAcceptanceLetterFile().map(File::getName));
|
||||||
controller.openBidAcceptanceLetterFileBtn.setOnAction(event -> {
|
controller.openBidAcceptanceLetterFileBtn.setOnAction(event -> {
|
||||||
Desktop.showInExplorer(viewModel.getBidAcceptanceLetterFile().get());
|
DesktopUtils.showInExplorer(viewModel.getBidAcceptanceLetterFile().get());
|
||||||
});
|
});
|
||||||
controller.openBidAcceptanceLetterFileBtn.disableProperty()
|
controller.openBidAcceptanceLetterFileBtn.disableProperty()
|
||||||
.bind(viewModel.getBidAcceptanceLetterFile().isNull());
|
.bind(viewModel.getBidAcceptanceLetterFile().isNull());
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.project.controller.cost;
|
package com.ecep.contract.manager.ds.project.controller.cost;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.contract.ContractFileType;
|
import com.ecep.contract.manager.ds.contract.ContractFileType;
|
||||||
import com.ecep.contract.manager.ds.contract.model.Contract;
|
import com.ecep.contract.manager.ds.contract.model.Contract;
|
||||||
import com.ecep.contract.manager.ds.contract.model.ContractFile;
|
import com.ecep.contract.manager.ds.contract.model.ContractFile;
|
||||||
@@ -13,6 +12,7 @@ import com.ecep.contract.manager.ds.project.service.ProjectService;
|
|||||||
import com.ecep.contract.manager.ds.project.vo.ProjectCostViewModel;
|
import com.ecep.contract.manager.ds.project.vo.ProjectCostViewModel;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -68,7 +68,7 @@ public class ProjectCostTabSkinBase
|
|||||||
@Override
|
@Override
|
||||||
public void initializeTab() {
|
public void initializeTab() {
|
||||||
controller.openFileBtn.setOnAction(event -> {
|
controller.openFileBtn.setOnAction(event -> {
|
||||||
Desktop.showInExplorer(viewModel.getAuthorizationFile().get());
|
DesktopUtils.showInExplorer(viewModel.getAuthorizationFile().get());
|
||||||
});
|
});
|
||||||
controller.openFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
|
controller.openFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
|
||||||
controller.changeFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
|
controller.changeFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.project.controller.quotation;
|
package com.ecep.contract.manager.ds.project.controller.quotation;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
|
import com.ecep.contract.manager.ds.company.CompanyStringConverter;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
||||||
@@ -26,6 +25,7 @@ import com.ecep.contract.manager.ds.project.service.ProjectService;
|
|||||||
import com.ecep.contract.manager.ds.project.vo.ProjectQuotationViewModel;
|
import com.ecep.contract.manager.ds.project.vo.ProjectQuotationViewModel;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
import com.ecep.contract.manager.ui.AbstEntityBasedTabSkin;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -101,7 +101,7 @@ public class ProjectQuotationTabSkinBase
|
|||||||
@Override
|
@Override
|
||||||
public void initializeTab() {
|
public void initializeTab() {
|
||||||
controller.openFileBtn.setOnAction(event -> {
|
controller.openFileBtn.setOnAction(event -> {
|
||||||
Desktop.showInExplorer(viewModel.getAuthorizationFile().get());
|
DesktopUtils.showInExplorer(viewModel.getAuthorizationFile().get());
|
||||||
});
|
});
|
||||||
controller.openFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
|
controller.openFileBtn.disableProperty().bind(viewModel.getAuthorizationFile().isNull());
|
||||||
controller.changeFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
|
controller.changeFileBtn.setOnAction(this::onChangeAuthorizationFileAction);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.vendor.controller;
|
package com.ecep.contract.manager.ds.vendor.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyContactService;
|
import com.ecep.contract.manager.ds.company.service.CompanyContactService;
|
||||||
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
import com.ecep.contract.manager.ds.company.service.CompanyService;
|
||||||
import com.ecep.contract.manager.ds.vendor.model.CompanyVendor;
|
import com.ecep.contract.manager.ds.vendor.model.CompanyVendor;
|
||||||
@@ -9,6 +8,8 @@ import com.ecep.contract.manager.ds.vendor.service.CompanyVendorService;
|
|||||||
import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorViewModel;
|
import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorViewModel;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityController;
|
import com.ecep.contract.manager.ui.AbstEntityController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
|
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
@@ -106,7 +107,7 @@ public class CompanyVendorWindowController extends AbstEntityController<CompanyV
|
|||||||
setStatus("目录错误,不存在");
|
setStatus("目录错误,不存在");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.vendor.controller;
|
package com.ecep.contract.manager.ds.vendor.controller;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.SpringApp;
|
import com.ecep.contract.manager.SpringApp;
|
||||||
import com.ecep.contract.manager.ds.company.model.Company;
|
import com.ecep.contract.manager.ds.company.model.Company;
|
||||||
import com.ecep.contract.manager.ds.other.model.BaseEnumEntity;
|
import com.ecep.contract.manager.ds.other.model.BaseEnumEntity;
|
||||||
@@ -15,6 +14,7 @@ import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorFileViewModel;
|
|||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
import com.ecep.contract.manager.ui.ViewModelService;
|
import com.ecep.contract.manager.ui.ViewModelService;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
import com.ecep.contract.manager.util.MyDateTimeUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
@@ -117,7 +117,7 @@ public class VendorTabSkinFile
|
|||||||
setStatus("文件不存在 " + file.getName());
|
setStatus("文件不存在 " + file.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void moveFileToCustomer(List<File> files) {
|
private void moveFileToCustomer(List<File> files) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.ecep.contract.manager.ds.vendor.controller.approved_list;
|
package com.ecep.contract.manager.ds.vendor.controller.approved_list;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
|
import com.ecep.contract.manager.ds.company.CompanyFileUtils;
|
||||||
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedFile;
|
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedFile;
|
||||||
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedList;
|
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedList;
|
||||||
@@ -10,6 +9,7 @@ import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorApprovedListViewModel
|
|||||||
import com.ecep.contract.manager.ui.AbstEntityTableTabSkin;
|
import com.ecep.contract.manager.ui.AbstEntityTableTabSkin;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
import com.ecep.contract.manager.ui.TabSkin;
|
import com.ecep.contract.manager.ui.TabSkin;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.SpecificationUtils;
|
import com.ecep.contract.manager.util.SpecificationUtils;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
@@ -101,7 +101,7 @@ public class CompanyVendorApprovedListTabSkinFiles
|
|||||||
setStatus("文件不存在 " + file.getName());
|
setStatus("文件不存在 " + file.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package com.ecep.contract.manager.ds.vendor.controller.approved_list;
|
package com.ecep.contract.manager.ds.vendor.controller.approved_list;
|
||||||
|
|
||||||
import com.ecep.contract.manager.Desktop;
|
|
||||||
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedList;
|
import com.ecep.contract.manager.ds.vendor.model.CompanyVendorApprovedList;
|
||||||
import com.ecep.contract.manager.ds.vendor.service.CompanyVendorApprovedListService;
|
import com.ecep.contract.manager.ds.vendor.service.CompanyVendorApprovedListService;
|
||||||
import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorApprovedListViewModel;
|
import com.ecep.contract.manager.ds.vendor.vo.CompanyVendorApprovedListViewModel;
|
||||||
import com.ecep.contract.manager.ui.AbstEntityController;
|
import com.ecep.contract.manager.ui.AbstEntityController;
|
||||||
import com.ecep.contract.manager.ui.FxmlPath;
|
import com.ecep.contract.manager.ui.FxmlPath;
|
||||||
|
import com.ecep.contract.manager.util.DesktopUtils;
|
||||||
import com.ecep.contract.manager.util.UITools;
|
import com.ecep.contract.manager.util.UITools;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
@@ -86,7 +86,7 @@ public class CompanyVendorApprovedListWindowController
|
|||||||
setStatus("目录错误,不存在");
|
setStatus("目录错误,不存在");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Desktop.showInExplorer(file);
|
DesktopUtils.showInExplorer(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onVendorApprovedListVerifyAction(ActionEvent event) {
|
public void onVendorApprovedListVerifyAction(ActionEvent event) {
|
||||||
|
|||||||
@@ -0,0 +1,78 @@
|
|||||||
|
package com.ecep.contract.manager.util;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import com.ecep.contract.manager.Desktop;
|
||||||
|
|
||||||
|
public class DesktopUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在默认浏览器中打开指定的URL。
|
||||||
|
* <p>
|
||||||
|
* 该函数使用JavaFX的HostServices类来调用系统默认的浏览器,并打开传入的URL。
|
||||||
|
*
|
||||||
|
* @param url 要在浏览器中打开的URL字符串。该参数不能为空,且应为有效的URL格式。
|
||||||
|
*/
|
||||||
|
public static void showInBrowse(String url) {
|
||||||
|
Desktop.instance.getHostServices().showDocument(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在系统的文件资源管理器中打开指定的文件夹。
|
||||||
|
* <p>
|
||||||
|
* 该方法首先尝试使用 java.awt.Desktop API 打开文件夹。如果该 API 不支持,
|
||||||
|
* 则在 Windows 系统中使用 explorer.exe 打开文件夹。
|
||||||
|
*
|
||||||
|
* @param dir 要打开的文件夹对象。如果为 null 或无效路径,可能会抛出异常。
|
||||||
|
* @throws RuntimeException 如果使用 java.awt.Desktop 打开文件夹时发生 IOException,
|
||||||
|
* 则将其包装为 RuntimeException 抛出。
|
||||||
|
*/
|
||||||
|
public static void showInExplorer(File dir) {
|
||||||
|
if (java.awt.Desktop.isDesktopSupported()) {
|
||||||
|
try {
|
||||||
|
java.awt.Desktop.getDesktop().open(dir);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
// 在Windows中使用explorer.exe打开文件夹,路径用双引号括起来
|
||||||
|
Process process = Runtime.getRuntime().exec(
|
||||||
|
new String[] { "explorer.exe", "\"" + dir.getAbsolutePath() + "\"" }, null, new File("."));
|
||||||
|
// process.waitFor();
|
||||||
|
} catch (IOException e) {
|
||||||
|
if (Desktop.logger.isDebugEnabled()) {
|
||||||
|
Desktop.logger.debug("Unable open {}", dir.getAbsolutePath(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkAndShowInExplorer(String path, Consumer<String> consumer) {
|
||||||
|
if (!StringUtils.hasText(path)) {
|
||||||
|
consumer.accept("文件/目录为空,无法打开");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
File file = new File(path);
|
||||||
|
if (!file.exists()) {
|
||||||
|
if (file.isFile()) {
|
||||||
|
consumer.accept("文件 " + file.getAbsolutePath() + " 不存在,请确认");
|
||||||
|
} else {
|
||||||
|
consumer.accept("目录 " + file.getAbsolutePath() + " 不存在,请确认");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
showInExplorer(file);
|
||||||
|
consumer.accept("打开文件/目录 " + path);
|
||||||
|
} catch (Exception e) {
|
||||||
|
consumer.accept("打开文件错误:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user