|
|
|
@ -6,6 +6,7 @@ import com.fr.config.ServerPreferenceConfig;
|
|
|
|
|
import com.fr.decision.webservice.v10.plugin.helper.category.impl.UpmResourceLoader; |
|
|
|
|
import com.fr.design.bridge.exec.JSBridge; |
|
|
|
|
import com.fr.design.bridge.exec.JSCallback; |
|
|
|
|
import com.fr.design.bridge.exec.JSExecutor; |
|
|
|
|
import com.fr.design.extra.PluginOperateUtils; |
|
|
|
|
import com.fr.design.extra.PluginUtils; |
|
|
|
|
import com.fr.design.extra.exe.GetInstalledPluginsExecutor; |
|
|
|
@ -28,10 +29,8 @@ import com.fr.log.FineLoggerFactory;
|
|
|
|
|
import com.fr.plugin.context.PluginMarker; |
|
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
import com.teamdev.jxbrowser.chromium.Browser; |
|
|
|
|
import com.teamdev.jxbrowser.chromium.JSArray; |
|
|
|
|
import com.teamdev.jxbrowser.chromium.JSFunction; |
|
|
|
|
import com.teamdev.jxbrowser.chromium.JSObject; |
|
|
|
|
import com.teamdev.jxbrowser.js.JsAccessible; |
|
|
|
|
import com.teamdev.jxbrowser.js.JsObject; |
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
|
import javax.swing.filechooser.FileNameExtensionFilter; |
|
|
|
@ -52,42 +51,45 @@ import java.util.concurrent.RunnableFuture;
|
|
|
|
|
*/ |
|
|
|
|
public class UpmBridge { |
|
|
|
|
|
|
|
|
|
public static UpmBridge getBridge(Browser browser) { |
|
|
|
|
return new UpmBridge(browser); |
|
|
|
|
public static UpmBridge getBridge() { |
|
|
|
|
return new UpmBridge(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private JSObject window; |
|
|
|
|
|
|
|
|
|
private UpmBridge(Browser browser) { |
|
|
|
|
this.window = browser.executeJavaScriptAndReturnValue("window").asObject(); |
|
|
|
|
private UpmBridge() { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 更新插件管理中心资源文件,这个方法仅仅是为了语义上的作用(更新) |
|
|
|
|
* |
|
|
|
|
* @param callback 安装完成后的回调函数 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void update(final JSFunction callback) { |
|
|
|
|
callback.invoke(window, "start", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Start")); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void update(final JsObject callback) { |
|
|
|
|
callback.call(JSExecutor.CALLBACK_FUNCTION_NAME, "start", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Start")); |
|
|
|
|
try { |
|
|
|
|
UpmResourceLoader.INSTANCE.download(); |
|
|
|
|
UpmResourceLoader.INSTANCE.install(); |
|
|
|
|
callback.invoke(window, "success", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Success")); |
|
|
|
|
callback.call(JSExecutor.CALLBACK_FUNCTION_NAME, "success", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Success")); |
|
|
|
|
EventDispatcher.fire(DownloadEvent.UPDATE, "success"); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
callback.invoke(window, "error", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Error")); |
|
|
|
|
callback.call(JSExecutor.CALLBACK_FUNCTION_NAME, "error", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Error")); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 下载并安装插件管理中心的资源文件 |
|
|
|
|
* |
|
|
|
|
* @param callback 安装完成后的回调函数 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void startDownload(final JSFunction callback) { |
|
|
|
|
callback.invoke(window, "start", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Start")); |
|
|
|
|
new SwingWorker<Void, Void>(){ |
|
|
|
|
@JsAccessible |
|
|
|
|
public void startDownload(final JsObject callback) { |
|
|
|
|
callback.call(JSExecutor.CALLBACK_FUNCTION_NAME, "start", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Start")); |
|
|
|
|
new SwingWorker<Void, Void>() { |
|
|
|
|
@Override |
|
|
|
|
protected Void doInBackground() throws Exception { |
|
|
|
|
UpmResourceLoader.INSTANCE.download(); |
|
|
|
@ -99,10 +101,10 @@ public class UpmBridge {
|
|
|
|
|
protected void done() { |
|
|
|
|
try { |
|
|
|
|
get(); |
|
|
|
|
callback.invoke(window, "success", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Success")); |
|
|
|
|
callback.call(JSExecutor.CALLBACK_FUNCTION_NAME, "success", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Success")); |
|
|
|
|
EventDispatcher.fire(DownloadEvent.SUCCESS, "success"); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
callback.invoke(window, "error", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Error")); |
|
|
|
|
callback.call(JSExecutor.CALLBACK_FUNCTION_NAME, "error", Toolkit.i18nText("Fine-Design_Basic_Update_Plugin_Manager_Download_Error")); |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
EventDispatcher.fire(DownloadEvent.ERROR, "error"); |
|
|
|
|
} |
|
|
|
@ -112,37 +114,44 @@ public class UpmBridge {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 获取upm的版本信息 |
|
|
|
|
* |
|
|
|
|
* @return 版本信息 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public String getVersion() { |
|
|
|
|
return ServerPreferenceConfig.getInstance().getOptimizedUPMVersion(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public String i18nText(String key) { |
|
|
|
|
return Toolkit.i18nText(key); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public void closeWindow() { |
|
|
|
|
UpmFinder.closeWindow(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public boolean isDesigner() { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@JSBridge |
|
|
|
|
public void getPackInfo(final JSFunction callback) { |
|
|
|
|
callback.invoke(window, StringUtils.EMPTY); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void getPackInfo(final JsObject callback) { |
|
|
|
|
callback.call(JSExecutor.CALLBACK_FUNCTION_NAME, StringUtils.EMPTY); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@JSBridge |
|
|
|
|
public void getPluginPrefix(final JSFunction callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(window, callback)), new GetPluginPrefixExecutor()); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void getPluginPrefix(final JsObject callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(callback)), new GetPluginPrefixExecutor()); |
|
|
|
|
task.execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -152,8 +161,9 @@ public class UpmBridge {
|
|
|
|
|
* @param callback 回调函数 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void getPluginCategories(final JSFunction callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(window, callback)), new GetPluginCategoriesExecutor()); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void getPluginCategories(final JsObject callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(callback)), new GetPluginCategoriesExecutor()); |
|
|
|
|
task.execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -164,8 +174,9 @@ public class UpmBridge {
|
|
|
|
|
* @param callback 回调函数 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void getPluginFromStoreNew(String info, final JSFunction callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(window, callback)), new GetPluginFromStoreExecutor(new JSONObject(info))); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void getPluginFromStoreNew(String info, final JsObject callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(callback)), new GetPluginFromStoreExecutor(new JSONObject(info))); |
|
|
|
|
task.execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -173,8 +184,9 @@ public class UpmBridge {
|
|
|
|
|
* 已安装插件检查更新 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void readUpdateOnline(final JSFunction callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(window, callback)), new ReadUpdateOnlineExecutor()); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void readUpdateOnline(final JsObject callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(callback)), new ReadUpdateOnlineExecutor()); |
|
|
|
|
task.execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -182,8 +194,9 @@ public class UpmBridge {
|
|
|
|
|
* 获取已经安装的插件的数组 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void getInstalledPlugins(final JSFunction callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(window, callback)), new GetInstalledPluginsExecutor()); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void getInstalledPlugins(final JsObject callback) { |
|
|
|
|
UpmTaskWorker<Void> task = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(callback)), new GetInstalledPluginsExecutor()); |
|
|
|
|
task.execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -193,29 +206,36 @@ public class UpmBridge {
|
|
|
|
|
* @param pluginIDs 插件集合 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void updatePluginOnline(Object pluginIDs, final JSFunction callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void updatePluginOnline(JsObject pluginIDs, final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
List<PluginMarker> pluginMarkerList = new ArrayList<>(); |
|
|
|
|
if (pluginIDs instanceof String) { |
|
|
|
|
pluginMarkerList.add(PluginUtils.createPluginMarker(pluginIDs.toString())); |
|
|
|
|
} else if (pluginIDs instanceof JSArray) { |
|
|
|
|
JSArray pluginInfos = (JSArray) pluginIDs; |
|
|
|
|
for (int i = 0, len = pluginInfos.length(); i < len; i++) { |
|
|
|
|
String value = pluginInfos.get(i).asString().getValue(); |
|
|
|
|
pluginMarkerList.add(PluginUtils.createPluginMarker(value)); |
|
|
|
|
} |
|
|
|
|
for (String key : pluginIDs.propertyNames()) { |
|
|
|
|
pluginIDs.property(key).ifPresent(v -> { |
|
|
|
|
pluginMarkerList.add(PluginUtils.createPluginMarker(GeneralUtils.objectToString(v))); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
PluginOperateUtils.updatePluginOnline(pluginMarkerList, jsCallback); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public void updatePluginOnline(String pluginID, final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
List<PluginMarker> pluginMarkerList = new ArrayList<>(); |
|
|
|
|
pluginMarkerList.add(PluginUtils.createPluginMarker(pluginID)); |
|
|
|
|
PluginOperateUtils.updatePluginOnline(pluginMarkerList, jsCallback); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 搜索在线插件 |
|
|
|
|
* |
|
|
|
|
* @param keyword 关键字 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void searchPlugin(String keyword, final JSFunction callback) { |
|
|
|
|
UpmTaskWorker<Void> worker = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(window, callback)), new SearchOnlineExecutor(keyword)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void searchPlugin(String keyword, final JsObject callback) { |
|
|
|
|
UpmTaskWorker<Void> worker = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(callback)), new SearchOnlineExecutor(keyword)); |
|
|
|
|
worker.execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -225,8 +245,9 @@ public class UpmBridge {
|
|
|
|
|
* @param filePath 插件包的路径 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void installPluginFromDisk(final String filePath, final JSFunction callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void installPluginFromDisk(final String filePath, final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
File file = new File(filePath); |
|
|
|
|
PluginOperateUtils.installPluginFromDisk(file, jsCallback); |
|
|
|
|
} |
|
|
|
@ -237,8 +258,9 @@ public class UpmBridge {
|
|
|
|
|
* @param pluginInfo 插件信息 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void uninstallPlugin(final String pluginInfo, final boolean isForce, final JSFunction callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void uninstallPlugin(final String pluginInfo, final boolean isForce, final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
PluginOperateUtils.uninstallPlugin(pluginInfo, isForce, jsCallback); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -249,8 +271,9 @@ public class UpmBridge {
|
|
|
|
|
* @param callback 回调函数 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void installPluginOnline(final String pluginInfo, final JSFunction callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void installPluginOnline(final String pluginInfo, final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); |
|
|
|
|
PluginOperateUtils.installPluginOnline(pluginMarker, jsCallback); |
|
|
|
|
} |
|
|
|
@ -260,8 +283,10 @@ public class UpmBridge {
|
|
|
|
|
* |
|
|
|
|
* @param filePath 插件包的路径 |
|
|
|
|
*/ |
|
|
|
|
public void updatePluginFromDisk(String filePath, final JSFunction callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public void updatePluginFromDisk(String filePath, final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
File file = new File(filePath); |
|
|
|
|
PluginOperateUtils.updatePluginFromDisk(file, jsCallback); |
|
|
|
|
} |
|
|
|
@ -272,8 +297,9 @@ public class UpmBridge {
|
|
|
|
|
* @param pluginID 插件ID |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void setPluginActive(String pluginID, final JSFunction callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void setPluginActive(String pluginID, final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
PluginOperateUtils.setPluginActive(pluginID, jsCallback); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -283,6 +309,7 @@ public class UpmBridge {
|
|
|
|
|
* @return 选择的文件的路径 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public String showFileChooser() { |
|
|
|
|
return showFileChooserWithFilter(StringUtils.EMPTY, StringUtils.EMPTY); |
|
|
|
|
} |
|
|
|
@ -296,6 +323,7 @@ public class UpmBridge {
|
|
|
|
|
* 这里换用JFileChooser会卡死,不知道为什么 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public String showFileChooserWithFilter(final String des, final String filter) { |
|
|
|
|
RunnableFuture<String> future = new FutureTask<>(new Callable<String>() { |
|
|
|
|
@Override |
|
|
|
@ -318,7 +346,7 @@ public class UpmBridge {
|
|
|
|
|
try { |
|
|
|
|
return future.get(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
@ -331,31 +359,60 @@ public class UpmBridge {
|
|
|
|
|
* @return 选择的文件的路径 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public String showFileChooserWithFilters(final String des, final Object args) { |
|
|
|
|
RunnableFuture<String> future = new FutureTask<>(new Callable<String>() { |
|
|
|
|
@Override |
|
|
|
|
public String call() { |
|
|
|
|
JFileChooser fileChooser = new JFileChooser(); |
|
|
|
|
List<String> filterList = new ArrayList<>(); |
|
|
|
|
if (args instanceof String) { |
|
|
|
|
filterList.add(GeneralUtils.objectToString(args)); |
|
|
|
|
} else if (args instanceof JSArray) { |
|
|
|
|
JSArray array = (JSArray)args; |
|
|
|
|
for (int i = 0, len = array.length(); i < len; i ++) { |
|
|
|
|
filterList.add(array.get(i).getStringValue()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
String[] filters = filterList.toArray(new String[0]); |
|
|
|
|
if (ArrayUtils.isNotEmpty(filters)) { |
|
|
|
|
FileNameExtensionFilter filter = new FileNameExtensionFilter(des, UpmUtils.findMatchedExtension(filters)); |
|
|
|
|
fileChooser.setFileFilter(filter); |
|
|
|
|
} |
|
|
|
|
int result = fileChooser.showOpenDialog(UpmFinder.getDialog()); |
|
|
|
|
if (result == JFileChooser.APPROVE_OPTION) { |
|
|
|
|
return fileChooser.getSelectedFile().getAbsolutePath(); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
@JsAccessible |
|
|
|
|
public String showFileChooserWithFilters(final String des, final String args) { |
|
|
|
|
RunnableFuture<String> future = new FutureTask<>(() -> { |
|
|
|
|
JFileChooser fileChooser = new JFileChooser(); |
|
|
|
|
List<String> filterList = new ArrayList<>(); |
|
|
|
|
filterList.add(args); |
|
|
|
|
String[] filters = filterList.toArray(new String[0]); |
|
|
|
|
if (ArrayUtils.isNotEmpty(filters)) { |
|
|
|
|
FileNameExtensionFilter filter = new FileNameExtensionFilter(des, UpmUtils.findMatchedExtension(filters)); |
|
|
|
|
fileChooser.setFileFilter(filter); |
|
|
|
|
} |
|
|
|
|
int result = fileChooser.showOpenDialog(UpmFinder.getDialog()); |
|
|
|
|
if (result == JFileChooser.APPROVE_OPTION) { |
|
|
|
|
return fileChooser.getSelectedFile().getAbsolutePath(); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
}); |
|
|
|
|
SwingUtilities.invokeLater(future); |
|
|
|
|
try { |
|
|
|
|
return future.get(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e.getMessage(), e); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 选择文件对话框 |
|
|
|
|
* |
|
|
|
|
* @param des 过滤文件描述 |
|
|
|
|
* @param args 文件的后缀 |
|
|
|
|
* @return 选择的文件的路径 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public String showFileChooserWithFilters(final String des, final JsObject args) { |
|
|
|
|
RunnableFuture<String> future = new FutureTask<>(() -> { |
|
|
|
|
JFileChooser fileChooser = new JFileChooser(); |
|
|
|
|
List<String> filterList = new ArrayList<>(); |
|
|
|
|
for (String key : args.propertyNames()) { |
|
|
|
|
args.property(key).ifPresent(v -> { |
|
|
|
|
filterList.add(GeneralUtils.objectToString(v)); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
String[] filters = filterList.toArray(new String[0]); |
|
|
|
|
if (ArrayUtils.isNotEmpty(filters)) { |
|
|
|
|
FileNameExtensionFilter filter = new FileNameExtensionFilter(des, UpmUtils.findMatchedExtension(filters)); |
|
|
|
|
fileChooser.setFileFilter(filter); |
|
|
|
|
} |
|
|
|
|
int result = fileChooser.showOpenDialog(UpmFinder.getDialog()); |
|
|
|
|
if (result == JFileChooser.APPROVE_OPTION) { |
|
|
|
|
return fileChooser.getSelectedFile().getAbsolutePath(); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
}); |
|
|
|
|
SwingUtilities.invokeLater(future); |
|
|
|
|
try { |
|
|
|
@ -372,7 +429,8 @@ public class UpmBridge {
|
|
|
|
|
* 获取系统登录的用户名 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public String getLoginInfo(final JSFunction callback) { |
|
|
|
|
@JsAccessible |
|
|
|
|
public String getLoginInfo(final JsObject callback) { |
|
|
|
|
registerLoginInfo(callback); |
|
|
|
|
return MarketConfig.getInstance().getBbsUsername(); |
|
|
|
|
} |
|
|
|
@ -383,8 +441,9 @@ public class UpmBridge {
|
|
|
|
|
* @param callback 回调函数 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void registerLoginInfo(final JSFunction callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void registerLoginInfo(final JsObject callback) { |
|
|
|
|
JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(callback)); |
|
|
|
|
String username = MarketConfig.getInstance().getBbsUsername(); |
|
|
|
|
if (StringUtils.isEmpty(username)) { |
|
|
|
|
jsCallback.execute(StringUtils.EMPTY); |
|
|
|
@ -404,14 +463,16 @@ public class UpmBridge {
|
|
|
|
|
* @param callback 回调函数 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
public void defaultLogin(String username, String password, final JSFunction callback) { |
|
|
|
|
UpmTaskWorker<Void> worker = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(window, callback)), new PluginLoginExecutor(username, password)); |
|
|
|
|
@JsAccessible |
|
|
|
|
public void defaultLogin(String username, String password, final JsObject callback) { |
|
|
|
|
UpmTaskWorker<Void> worker = new UpmTaskWorker<>(new JSCallback(UpmBrowserExecutor.create(callback)), new PluginLoginExecutor(username, password)); |
|
|
|
|
worker.execute(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 清除用户信息 |
|
|
|
|
*/ |
|
|
|
|
@JsAccessible |
|
|
|
|
public void clearUserInfo() { |
|
|
|
|
MarketConfig.getInstance().setInShowBBsName(StringUtils.EMPTY); |
|
|
|
|
FinePassportManager.getInstance().logout(); |
|
|
|
@ -422,6 +483,7 @@ public class UpmBridge {
|
|
|
|
|
* 打开论坛消息界面 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public void getPriviteMessage() { |
|
|
|
|
try { |
|
|
|
|
String loginUrl = CloudCenter.getInstance().acquireUrlByKind("bbs.default"); |
|
|
|
@ -435,6 +497,7 @@ public class UpmBridge {
|
|
|
|
|
* 忘记密码 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public void forgetHref() { |
|
|
|
|
try { |
|
|
|
|
Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.reset"))); |
|
|
|
@ -447,6 +510,7 @@ public class UpmBridge {
|
|
|
|
|
* 立即注册 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public void registerHref() { |
|
|
|
|
try { |
|
|
|
|
Desktop.getDesktop().browse(new URI(CloudCenter.getInstance().acquireUrlByKind("bbs.register"))); |
|
|
|
@ -457,9 +521,11 @@ public class UpmBridge {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 使用系统浏览器打开网页 |
|
|
|
|
* |
|
|
|
|
* @param url 要打开的网页 |
|
|
|
|
*/ |
|
|
|
|
@JSBridge |
|
|
|
|
@JsAccessible |
|
|
|
|
public void openShopUrlAtWebBrowser(String url) { |
|
|
|
|
if (Desktop.isDesktopSupported()) { |
|
|
|
|
try { |
|
|
|
|